JAVA

    객체 지향의 사실과 오해 - 책임과 메시지

    객체 지향의 사실과 오해 - 책임과 메시지

    출처 : 객체지향의 사실과 오해 조영호 저 | 위키북스 자율적인 책임 설계의 품질을 좌우하는 책임 적절한 책임을 적절한 객체에게 할당하는 과정에서 적절한 책임이 자율적인 객체를 만든다. 자율적인 객체들이 모여 유연하고 단순한 협력을 만듬 자율적인 객체 자율적인 객체 : 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체 자율적인 객체가 되기 위해선 할당되는 책임이 자율적이어야 함 -> 왕은 모자장수에게 '글로 요약하라', '시간 순서대로 말하라' 처럼 상세한 요청이 아닌 '증언하라'라는 자율성이 충분히 보장된 책임을 할당 왕의 입장에서 모자 장수가 어떤 방법으로 증언하는 지는 전혀 중요 X how가 아닌 what을 생각 -> '시간 순서대로 말하라' 처럼 '어떻게'가 아닌 '증언하라..

    Wrapper Class

    Wrapper Class? 자바의 자료형은 primitive type과 reference type으로 나뉜다. - primitive type : char, int, float, double, boolean 등 - reference type : class, interface 등 기본 자료타입(primitive type) 데이터를 객체(Object)로 표현해야 할 때 객체로 다루기 위해 사용하는 클래스를 wrapper class라고 한다. Wrapper Class 구조도 Wrapper Class를 사용하는 이유 기본 데이터 타입(primitive type)을 Object로 변환할 수 있다. parse + 기본 타입명을 이용해 문자열을 기본 타입 값으로 변환할 때 사용된다. java.util 패키지의 클래스는..

    객체 지향의 사실과 오해 - 역할, 책임, 협력

    객체 지향의 사실과 오해 - 역할, 책임, 협력

    출처 : 객체지향의 사실과 오해 조영호 저 | 위키북스 협력 협력은 한 객체가 다른 객체에게 도움을 요청할 때 시작된다. 이상한 나라의 재판 누군가 왕에게 재판을 요청함으로써 재판 시작 왕이 토끼에게 증인을 부를 것을 요청 왕의 요청을 받은 토끼는 모자 장수에게 증인석 입장을 요청 모자 장수는 증인석에 입장하여 토끼의 요청에 응답 모자 장수의 입장은 왕이 토끼에게 요청했던 증인 호출에 대한 응답이기도 함 왕은 모자 장수에게 증언할 것을 요청 모자 장수는 증언하여 왕의 요청에 응답 객체들이 특정한 요청을 받아들일 수 있는 이유는 그 요청에 대해 응답하는데 필요한 지식과 행동 방식을 가지고 있기 때문이다. 요청과 응답은 협력에 참여하는 객체가 수행할 책임을 정의함 책임 어떤 객체가 어떤 요청에 응답할 수 있..

    객체 지향의 사실과 오해 - 타입과 추상화

    객체 지향의 사실과 오해 - 타입과 추상화

    출처 : 객체지향의 사실과 오해 조영호 저 | 위키북스 추상화를 통한 복잡성 극복 현재의 지하철 노선도는 불필요한 지형 정보를 제거하고 역 사이의 연결성을 강조함으로써 승객들의 목적에 맞게 현실을 단순화함 -> 추상화 추상화란 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 본질을 드러나게 하여 복잡도를 극복하는 과정 초기의 지하철 노선도 추상화이지만 지하철을 이용하는 승객들의 역과 역 사이의 연결관계를 알려는 목적에는 적합지 않았기 때문에 외면 추상화 공통점은 취하고 차이점은 버리는 일반화를 통해 단순화 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거하여 단순화 객체 지향과 추상화 이상한 나라의 왕, 왕비, 하트 잭, 신하 등 다양한 객체들을 계급, 나이, 성격 등의 차이점은 무시한 채 트..

    객체 지향의 사실과 오해 - 이상한 나라의 객체

    객체 지향의 사실과 오해 - 이상한 나라의 객체

    출처 : 객체지향의 사실과 오해 조영호 저 | 위키북스 객체 지향과 인지 능력 객체 지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이유는 객체 지향이 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 인간의 기본적인 인지 능력에 기반을 두고 있기 때문이다. 인간이 인지할 수 있는 다양한 객체들이 모여 현실 세계를 이루는 것처럼 소프트웨어의 세계 역시 인간이 인지할 수 있는 다양한 소프트웨어 객체들이 모여 이뤄져 있다. but, 객체 지향 패러다임의 목적은 현실 세계를 모방하는 것이 아닌 현실 세계를 기반으로 새로운 세계를 창조하는 것 객체, 이상한 나라 이상한 나라의 앨리스는 문을 통과하기에 적당한 상태로 자신의 키를 조절 -> 상태를 가지며 상태는 변경 가능 특정 시점의 앨리스의 상태 = 특정..

    객체 지향의 사실과 오해 - 협력하는 객체들의 공동체

    객체 지향의 사실과 오해 - 협력하는 객체들의 공동체

    출처 : 객체지향의 사실과 오해 조영호 저 | 위키북스 객체지향에서 가장 중요한 개념 3가지 역할 책임 협력 요청과 응답으로 구성된 협력 다형성의 실세계 비유 사실 실세계와 객체 지향 사이는 먼 거리가 있다. 그래도 실세계의 비유로 객체지향을 이해하기에는 좋다. 다음의 커피 주문을 비유로 객체지향을 이해해보자 커피 주문이라는 협력은 손님이 커피를 주문하면서 시작된다 -> 커피 주문 요청 주문을 받은 캐시어는 주문 내역이 기록된 컵을 전달 -> 커피 제조 요청 바리스타는 커피를 제조한 후 완료됐음을 캐시어에게 알린다 -> 커피 완성 응답 캐시어는 손님에게 커피가 준비됐음을 알린다. -> 커피 완성 응답 역할과 책임 : 협력이 원활하게 진행되는 데 필요한 핵심적인 구성 요소 협력하는 과정 속에서 특정한 역할..

    [Java] ArrayList와 List의 차이

    [Java] ArrayList와 List의 차이

    ArrayList와 List의 차이 Arraylist Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to implementing the List interface, this class provides methods to manipulate the size of the array that is used internally to store the list. List An ordered collection (also known as a sequence). The user of this inte..