2021-01-15-TIL TIL 객체지향 설계 메시지와 결합도, 응집도 객체를 호출하는것은 메시지를 보내는 것이다. Low coupling, high cohesion 유지보수하기 쉬운 코드의 기준으로 자주 언급되는 원칙이다. 결합도는 모듈끼리 얼마나 서로에게 의존하는지를 말한다. 한 모듈이 다른 모듈의 내부 동작을 너무 많이 알면 그 모듈의 내부가 바뀔 때 함께 깨지므로, 모... 2021/01/15 2021-TIL
2021-01-14-TIL TIL 2021-01-14-TIL Smalltalk 30분 튜토리얼 small talk 30min tutorial 객체지향 언어의 역사 제록스 -> 마우스, GUI, 카피머신 GUI 프로그래밍을 잘 하기위해서 small talk 언어를 만들었다. Smalltalk는 1970년대 Xerox PARC(팰로앨토 연구소)에서 Alan Kay를 중심으... 2021/01/14 2021-TIL
Java에서 객체 비교를 어떻게 해야 하는가 Notes Java에서 객체 비교를 처음 배울 때 가장 먼저 헷갈리는 것은 ==와 equals()의 차이다. 여기에 hashCode()까지 얽히면 왜 같은 객체처럼 보이는데 비교 결과가 다르게 나오는지 혼란스러워지기 쉽다. 핵심은 무엇을 같다고 볼 것인지를 구분하는 데 있다. ==는 무엇을 비교하나 참조 타입에서 ==는 두 변수가 같은 객체를 가리키는지... 2021/01/14 Java
상속과 다형성은 어떻게 연결되는가 Notes 객체지향을 설명할 때 상속과 다형성은 거의 항상 함께 등장한다. 하지만 둘은 같은 개념이 아니다. 상속은 구조를 재사용하는 방법이고, 다형성은 같은 메시지를 서로 다른 방식으로 처리하게 만드는 성질이다. 상속이란 무엇인가 상속은 기존 클래스의 속성과 동작을 기반으로 새로운 클래스를 정의하는 방식이다. public class Animal { ... 2021/01/14 Java
객체, 클래스, 인스턴스는 어떻게 구분해야 하는가 Notes 객체지향을 처음 공부할 때 가장 헷갈리는 단어가 객체, 클래스, 인스턴스다. 세 단어가 비슷한 맥락에서 함께 등장하지만, 같은 의미는 아니다. 이 차이를 흐리게 이해하면 이후에 상속, 캡슐화, 생성자, 메모리 모델 같은 개념도 같이 흐려진다. 객체란 무엇인가 객체는 상태와 동작을 함께 가진 독립적인 단위다. 예를 들어 사용자, 주문, 계좌 같... 2021/01/14 Java
Java에서 this와 super는 언제 어떻게 써야 하는가 Notes this와 super는 자바 문법 중에서도 자주 쓰이지만, 왜 필요한지 맥락 없이 외우기 쉬운 키워드다. 둘 다 결국 현재 객체와 상속 구조에서 참조 대상을 분명히 하기 위한 장치라고 보면 이해가 쉬워진다. this는 무엇을 가리키는가 this는 현재 객체 자신을 가리킨다. 즉, 인스턴스 메서드나 생성자 안에서 this를 사용하면 “지금 동작... 2021/01/14 Java
SOLID 원칙을 실무적으로 어떻게 이해해야 하는가 Notes SOLID는 객체지향 설계의 다섯 가지 원칙을 묶은 이름이다. 면접에서는 종종 정의를 외우듯 말하게 되지만, 실무에서는 “변경이 들어왔을 때 코드가 어디서 깨지는가”를 줄이기 위한 기준으로 보는 편이 훨씬 유용하다. SOLID가 필요한 이유 기능은 계속 바뀌고, 요구사항은 뒤늦게 들어오며, 처음 설계한 구조가 끝까지 유지되는 경우는 거의 없다.... 2021/01/14 Programming
2021-01-13-TIL TIL 2021-01-13-TIL JDK 소스코드 열어보기 ArrayList가 내부에서 배열을 어떻게 늘리는지, HashMap이 충돌을 어떻게 처리하는지는 문서보다 소스를 직접 보는 편이 빠를 때가 있다. JDK는 표준 라이브러리 소스를 함께 배포하므로 따로 내려받지 않아도 된다. IntelliJ 에서 열어보기 아무 프로젝트나 생성해서 찾고자하는 ... 2021/01/13 2021-TIL
2021-01-12-TIL TIL 알고리즘과 자료구조 수업 알고리즘은 사용하는 일이 거의 없다. 하지만 자료구조는 매우 빈번하게 사용된다. 알고리즘의 정의 알고리즘의 조건 : 입력, 출력, 유한성 The Art of Computer Programming 유한성(Finiteness) 명확성(Definiteness) 입력(Input) 출력(Output) Knu... 2021/01/12 2021-TIL
Java에서 배열과 리스트를 어떻게 구분해야 하는가 Notes Java에서 여러 값을 담는 가장 기본적인 선택지는 배열과 리스트다. 둘 다 순서를 가진 데이터를 담는다는 점은 같지만, 사용 방식과 제약은 꽤 다르다. 배열의 특징 배열은 같은 타입의 값을 고정된 크기로 담는 구조다. int[] numbers = new int[10]; 배열의 핵심 특징: 크기가 고정된다 인덱스로 접근한다 ... 2021/01/12 Java