디자인 패턴을 이해하기 위한 클래스 다이어그램 기본 개념

*본 게시글은 추후 디자인 패턴에 대한 글을 작성할 때 도입할 클래스 다이어그램과, 클래스 다이어그램에서의 연관 관계에 대한 이해를 돕기 위해 작성하였습니다. 클래스 다이어그램이란?시스템의 구조를 클래스 단위로 표현한 UML(Unified Modeling Language)으로, 클래스들 간의 속성, 메서드, 그리고 관계(상속, 연관 등)를 시각적으로 보여주는 다이어그램이다. 클래스 다이어그램에서 클래스는 클래스명, 변수, 메서드 순으로 나열한다. 위의 예시를 통해 클래스 다이어그램에 대해 간단히 설명하자면, 각 사각형의 맨 윗부분에 적혀있는 "ChessPiece"와 같은 것들은 클래스명, 그 아랫 부분에 "- color : String", "+ get_color"와 같은 것들은 각 클래스의 멤..

[Java] 인터페이스에도 완성된 메서드를 쓴다고?

*본 게시물은 개인 공부를 기록하기 위해 작성하였으며, 내용에 오류가 있을 수 있음을 밝힙니다. 지금까지 인터페이스는 상수와 추상 메서드만 선언할 수 있는, 말 그대로 '껍데기'라고만 알고 있었다. 그런데 오늘 인터페이스에도 구현된 메서드, 즉 static과 default 메서드를 정의할 수 있다는 사실을 처음 알게 되었다. 처음 알게 된 개념이어서 궁금한 점이 많았고, 여러 자료를 찾아보며 공부한 내용을 이 글에 정리해 보았다. 결과부터 말하자면, 이전에는 내가 알던 대로 인터페이스에는 무조건 추상 메서드만 쓸 수 있었다. 하지만, 자바 8부터는 완성된 default 메서드와 static 메서드를 쓸 수 있게 된 것이다. 우선 인터페이스에서의 default 메서드와 static 메서드에 대해1. 호출..

뭐지? 2025.04.23 1

[Java] 컬렉션 프레임워크와 Big O 표기법을 통한 간단한 성능 비교 : 개발자는 소프트웨어의 성능을 향상시키기 위해 존재한다.

*본 게시물은 개인 공부를 기록하기 위해 작성하였으며, 내용에 오류가 있을 수 있음을 밝힙니다. 컬렉션 프레임워크란?컬렉션 : 여러 객체를 모아 놓은 것.프레임워크 : 표준화, 정형화된 체계적인 프로그래밍 방식 -> 컬렉션 프레임워크 : 데이터를 효율적으로 저장하고 처리하기 위한 자료구조와 알고리즘을 제공하는 Java의 표준 라이브러리. 위 그림은 Collection 인터페이스 상속 계층도이고, 여기서 검은색 박스는 인터페이스, 파란색 박스는 각 인터페이스를 상속받아 구현한 클래스들이다. 각 인터페이스들에 대해 간단하게 설명하자면, List는 순서 O, 중복 OSet은 순서 X, 중복 XMap은 Key, Value쌍으로 데이터를 저장하는 자료구조이며, key는 중복 X, value는 중복O Q..

JAVA 2025.04.22 1

[Java] 두 변수가 같은 값을 가지는데 왜 다르다고 나올까?

*본 게시물은 개인 공부를 기록하기 위해 작성하였으며, 내용에 오류가 있을 수 있음을 밝힙니다. 제목에 대한 답을 얻기 위해서는 우선, 자바에서의 "동등성"과 "동일성"에 대해 이해해야 한다.우리는 자바를 공부하면서 "동등성"과 "동일성", 그리고 "equals 메서드"와 "=="에 대해 들어본 적이 있을 것이다. 자바에서 동등하다는 것은 "값"이 같다는 것을 의미하고, 동일하다는 것은 "주소"가 같다 즉, 같은 객체를 가리킨다는 것을 의미한다. 또한, equals 메서드는 기본적으로는 주소비교지만, 오버라이딩 시 내용 비교가 가능하고, String, Integer, List, Set, Map 등은 기본적으로 내용 비교로 오버라이딩 되어 있다. 반면, 연산자 "=="은 기본형인 경우에만 "값"을 비교하..

뭐지? 2025.04.22 0

[Java] 메서드에 값을 넘겼는데 값이 왜 안 바뀔까?

*본 게시물은 개인 공부를 기록하기 위해 작성하였으며, 내용에 오류가 있을 수 있음을 밝힙니다.*본 게시물은 남궁성 강사님의 자바의 정석 교재를 참고하여 작성하였습니다. Q) 첫 번째 코드와 두 번째 코드의 출력값이 각각 어떻게 나올까? 이유는 뭘까?스크롤을 내려 글을 읽으시기 전에 먼저 스스로 답을 생각해 보시길 바랍니다. 두 코드의 출력값이 다르게 나오는 이유는 change 메서드의 매개변수 타입이 다르기 때문이다.-> 매개변수의 타입이 기본형일 때와 참조형일 때의 차이를 이해해야한다. 자바에서는 메서드를 호출할 때 매개변수로 지정한 값을 메서드의 매개변수에 복사하여 전달한다. 매개변수가 기본형이면 값 자체가 복사되어 전달되므로, 메서드 내에서 변경해도 원본 변수(인스턴..

뭐지? 2025.04.19 1

[Java] p는 Child 객체인데, 왜 p.x는 Child의 변수가 아닐까?

오늘 아래의 연습 문제를 풀다가 이해가 되지 않는 부분이 생겨서 그 부분에 대해 공부한 후 이 글을 쓰게 되었다. Q) 다음의 코드를 실행한 결과를 적으시오. 내가 했던 생각을 적어보자면, Parent p = new Child();에서 p가 가리키는 객체는 Parent타입이지만 Child의 객체이다. 따라서 p.x는 Child 객체의 x값이 출력돼야 하고, p.method()를 호출하면 Child 클래스의 메서드 내용이 출력돼야 한다. 따라서 이 코드를 실행한 결과는p.x = 200child Methodc.x = 200child Method이다. 하지만 실제 출력 결과는 달랐다. 출력의 첫 줄에서 p.x = 200이 아니라 p.x = 100이 출력되었다. 이 출력 결과를 보고 이해가 가지 않아서 ..

뭐지? 2025.04.16 2

Git 헷갈리는 명령어 (reset, revert, rebase)

*본 게시물은 개인 공부를 기록하기 위해 작성하였으며, 내용에 오류가 있을 수 있음을 밝힙니다. git reset- git reset은 변경 사항을 취소하는 데 사용한다. 즉, 이전 커밋으로 되돌릴 수 있다.- 사용 형식 : git reset --(모드) (돌아갈 커밋)- 모드 인자로는 soft, mixed, hard를 사용한다. (디폴트로 mixed를 사용) - 차이 :--soft : 커밋은 취소되지만, 스테이징 상태는 유지한다.--mixed : 커밋과 스테이징이 모두 취소되지만, 로컬 변경 상태는 유지한다.--hard :  커밋, 스테이징, 로컬 변경 상태를 모두 취소한다. - 사용 예시 :git reset --hard HEAD~1 (최근 커밋 하나를 삭제하고 변경 내용도 함께 제거)git reset..

개인 공부 2025.03.29 0

생성형 AI의 위험성 : 우리는 효율을 위해 생성형 AI를 계속 사용해야만 하는가?

*본 게시물은 IT WORLD의 인터넷 기사를 참고하여 작성하였음을 밝힙니다.*본 게시물은 유튜브 채널 "지컨"님의 '※실제상황※ 자아가 생겨버린 미친 인공지능;;; 레전드 실화 공포썰. zip [무서운 게 지대 좋아!]' 영상을 참고하여 작성하였음을 밝힙니다. 오늘 낮에 생성형 AI에 대한 한 기사를 보고 궁금증이 생겨 구글에 검색도 해보고 유튜브도 찾아보면서 했던 생각들을 써보려고 한다. 기사의 일부를 인용하자면,"최근 생성형 AI 테스트 결과, 이들 모델이 인간의 지시를 의도적으로 무시할 뿐만 아니라 심지어 속이기까지 한다는 사실이 밝혀졌다. 생성형 AI는 정말로 신뢰할 수 없는 기술일까? 지금까지 생성형 AI의 주요 문제는 '환각', 즉 정답을 모를 때 사실을 지어내는 현상이다. 그런데 이번 테스..

잡동사니 2025.03.04 1