OOP9 [객체지향의 사실과 오해] 4장 : 역할, 책임, 협력 🙋 들어가며 모든 일에는 일련의 흐름이 존재합니다. 연애를 하고 싶다고 무작정 고백하면 그냥 혼쭐 내는 것과 다를 바가 없습니다. 서로를 알아가는 썸이라는 단계를 밟고 고백을 해야만 비로소 연애를 시작할 수 있습니다. 객체지향의 세계에서도 마찬가지입니다. 먼저 객체의 행동과 상태을 고려하는 것은 고백으로 혼내주는 것입니다. 우리는 도메인을 먼저 분석하고 어떤 흐름으로 해결할지 고민하는 것이 중요합니다. 이 흐름이 바로 문맥(Context)입니다. 객체지향 세계에서 객체들은 문맥을 속에서 서로 협력합니다. 이번 장에서는 바로 문맥에 맞게 협력을 고려하기가 주제이자 핵심입니다. 🗣️ 협력 객체가 협력하는 가장 중요한 이유는 동일한 목적을 이루기 위함입니다. 그렇다면 왜 협력이 중요할까요? 간단한 예로 들.. 2023. 6. 19. [Design Patterns] 상태 패턴 🙋 들어가기 앞서 디자인 패턴 중에서 행동 패턴에 속해있는 "상태 패턴"에 대해서 알아보는 시간을 가져보겠습니다. 이 글에서는 상태 패턴의 구조를 예시로 알아보고 장단점과 비슷한 다른 패턴을 비교해 보겠습니다. 🫨 상태 패턴 상태 패턴은 객체 내부의 상태가 변경될 때마다 행동이 달라지는 디자인 패턴입니다. 상태에 맞는 행동을 분리해 코드의 응집도를 높이고 새로운 행동이 추가되어도 다른 행동에 영향을 주지 않는 것이 목적입니다. 🚑 구조 다음 그림과 같은 구조를 가지고 있습니다. 객체(Context)의 상태를 분리하고 상태 객체의 참조를 가지게 합니다. 이후 상태에 맞는 행위를 구현한 구현체를 만들어 줍니다. 🧙♂️ 예시 (feat. 주문) 배달 주문을 하는 것으로 예시를 들어보겠습니다! 간단하게 어떤 .. 2023. 6. 13. [객체지향의 사실과 오해] 2장 : 이상한 나라의 객체 🧐 객체지향의 패러다임? 2장을 펼쳤을 때, 가장 먼저 눈에 들어오는 말은 패러다임이다. 패러다임이라는 말은 익숙한 듯 낯설다. 위키백과에는 패러다임은 다음과 같이 정의되어 있다. 패러다임(paradigm)은 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념이다. JPA(ORM)를 시작할 때 "객체지향 프로그래밍과 관계형 데이터베이스의 패러다임의 불일치를 해소하기 위한 기술"이라는 점을 가장 먼저 공부한다. 당시에는 단순하게 둘 사이의 차이를 해소시키는 것으로 이해하고 넘어갔지만 패러다임이 무엇인지 명확하게 이해가 가지 않는다. 그렇다면 패러다임을 어떻게 이해하면 좋을까? 나는 패러다임은 안경으로 이해했.. 2023. 6. 4. [객체지향의 사실과 오해] 1장 : 협력하는 객체들의 공동체 🧐 객체지향? 책을 읽기 전에 먼저 내가 아는 객체지향이란 어떤 것일지 생각해 봤다. 내가 생각하는 객체지향은 "나중에 추가될 요구사항에 유연하게 프로그래밍을 할 수 있게 하는 것"이라고 생각했다. 글을 적어 내려가면서 떠오르는 생각은 단순히 다형성에만 초점이 잡혀있는 것 같다. 책에서 가장 먼저 객체지향이 가지는 오해에 대해서 언급한다. 객체지향의 목표는 무엇일까? 일반적으로 실세계를 모방하는 것이라고 많이 알고 있다. 하지만, 요구사항을 만족하는 새로운 세계를 만드는 것이 객체지향의 목표이다. 그렇다면 왜 실세계를 모방하는 것으로 우리는 많이 알고 있을까? 우리는 객체지향을 이해하는 데 있어서 실세계를 예로 드는 것이 이해하기 쉽기 때문이다. 단순히 이해하는데 쉬울 뿐 구현하고 설계하는 기엔 부적합하.. 2023. 4. 1. [Java] Java 인터페이스 ✍️ 학습할 것 인터페이스 정의 인터페이스 구현 및 사용하기 인터페이스 상속 인터페이스의 기본 메서드 (Default Method), 자바 8 인터페이스의 static 메서드, 자바 8 인터페이스의 private 메소드, 자바 9 📌 인터페이스 인터페이스란? 일종의 추상 클래스이다. 추상 메서드와 상수만 멤버로 가질 수 있으며 다중 상속을 지원한다. 많은 블로그에서 인터페이스에 대해서 말하는 바는 대부분 다음과 같다. '인터페이스는 추상 클래스보다 추상화가 높고 상수와 추상 메서드만을 가진다.' 전~혀 와닿지 않는다. 추상 클래스가 있는데 왜 인터페이스가 필요한 것일까? ✔️ 추상 클래스 vs 인터페이스 추상 클래스는 abstract 키워드로 정의되거나 클래스 내 '추상 메서드'가 하나 이상 포함된 클래.. 2022. 9. 8. [Java] Java의 패키지 ✍️ 학습할 것 패키지 (Package) import 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 📌 패키지 (Package) 패키지란? 클래스와 인터페이스의 집합이다. 자바는 패키지로 관련된 클래스나 인터페이스를 분류해 효율적으로 파일들을 관리한다. 패키지만 다르다면 같은 이름의 클래스가 존재할 수 있어 협업에서 발생하는 이름 충돌 문제를 해결할 수 있다. 추가적인 특징은 다음과 같다. 모든 클래스는 반드시 하나의 패키지에 속한다. 패키지 선언은 소스파일 첫 번째 문장에 단 한 번만 가능하다. ✔️ 이름 없는 패키지 패키지가 지정되지 않은 파일들을 포함하는 패키지이다. 앞서 말했듯이 모든 패키지는 반드시 하나의 패키지에 속해야 한다. 만약 패키지를 지정하지 않고 소스파일을 .. 2022. 9. 5. 이전 1 2 다음