본문 바로가기
728x90

객체지향7

[객체지향의 사실과 오해] 2장 이상한 나라의 객체 객체지향과 인지 능력 많은 사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이유 -> 객체지향이 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 인간의 기본적인 인지능력에 기반을 두고 있기 때문 객체 : 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것 객체지향 프로그램 : 소프트웨어의 세계 역시 인간이 인지할 수 있는 다양한 소프트웨어 객체들이 모여 이뤄져 있다는 믿음에서 시작 그러나, 객체지향 패러다임의 목적 현실 세계 모방 x 현실 세계를 기반으로 새로운 세계를 창조 -> 소프트웨어 세계에서 살아가는 객체는 현실 세계에 존재하는 객체와는 전혀 다른 모습을 보이는 것이 일반적! 예시) 스스로 전원을 킬 수 있는 전구 주문 객체가 자신의 금액을 .. 2024. 3. 16.
[객체지향의 사실과 오해] 1장 협력하는 객체들의 공동체 시너지를 생각해라. 전체는 부분의 합보다 크다. 객체지향의 공부를 처음 접하는 대부분의 사람들은 '객체지향이란 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임' 이라는 설명을 접하게 된다. 하지만 위의 패러다임은 철학적인 개념으로는 적합할수 있으나 유연하고 실용적인 관점에서는 적합하지 않다. 객체지향의 목표는 실세계를 모방하는 것이 아닌 새로운 세계를 창조하는 것이다. 그렇다면 왜 자꾸 실세계의 모델링이라는 개념을 사용하는 것일까? -> 객체지향의 캡슐화와 자율성을 설명하는데 효과적 -> 객체지향의 기본 사상을 이해하고 학습하는데 효과적 처음에 이부분을 읽었을 때는 조금 당황스러운 부분이 있었습니다.. 지금까지 알고 있었던 개념이 사실 적합하지 않을 수도..?? 협력하는 사람들 커피를 만들어 내.. 2024. 3. 12.
캡슐화란 무엇일까? 객체지향의 특징 중에 캡슐화라는 단어가 있습니다! 캡슐화는 무엇이고 무엇이기에 객체지향의 특징이 될 수 있었을까요? 캡슐화 정의 (위키피디아) 객체의 속성과 행위를 하나로 묶고 실제 구현 내용 일부를 내부에 감추어 은닉한다. 위의 정의는 위키피다아에 적혀 있는 내용입니다. 무언가를 묶고 숨기고 하는거 같은데 이것을 통해서 어떤 이득이 있길래 객체지향의 특징이라고 하는 걸까요? 아래의 코드를 보겠습니다. public String getSuperAdmin() { Member kevin = new Member("kevin", 30, true); // **중요** if(kevin.getAge() > 25 && kevin.isAdmin()) { return "super admin"; } return "just a.. 2023. 12. 1.
객체지향 설계란? - 3. LSP 이번 포스팅에서는 solid의 3번째 원칙인 lsp에 대해서 알아보겠습니다! LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 LSP에 대해서 설명하기에 앞서, 객체지향의 대해서 조금 이야기 해보겠습니다. -객체지향에서의 상속은 조직도나 계층도로 표현되면 안됩니다. 조직도 같은 경우, 분명 다른 존재임에도 같은 기능을 요구할 수 있기 때문입니다. 따라서,객체지향은 분류도로 표현해야합니다. 이 이야기에 대해서는 밑에서 그림으로 좀 더 이야기 해보겠습니다. - 서브타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 합니다. - 하위 클래스의 인스턴스는 상위 클래스의 인스턴스 역할을 수행하는데 문제가 없어야 합니다. 위의 문장을 정리하면 하위클래스 is a kind of .. 2022. 1. 16.
객체지향 설계란? - 2. OCP 이번 포스팅에서는 OCP 규칙에 대해서 포스팅해보겠습니다. OCP(Open Closed Principle) : 개방 폐쇄 원칙 소프트웨어 객체는 확장에는 열려있고, 수정에는 닫혀있다는 한다는 프로그래밍 원칙입니다. 프로그래밍을 진행할 때 수정할 때 한 객체를 수정해야 하는 상황이 발생한다면 그 객체를 이용하는 다른 객체들을 줄줄이 수정해야 하는 일이 발생할 수 있습니다. 따라서, 개방 폐쇄 원칙을 잘 지키게 된다면 기능을 추가하거나 수정할 때 기존의 코드를 수정하지 않고, 새로운 코드를 추가함으로써 기능의 추가나 수정을 완성할 수 있습니다. 말로만 하면 이해하기 어려우니 간단한 코드로 알아보겠습니다! Tiger 클래스입니다. public class Tiger { public String name; pub.. 2021. 12. 19.
객체지향 설계란? - 1. SRP (solid) 객체지향의 특징은 다형성, 캡슐화, 상속, 추상화 들이 있습니다. 이러한 특징을 잘 활용해서 객체지향 설계를 해야합니다. 하지만 잘 하라고만 하면 어떻게 하라는 건지... 알 수 없습니다. 따라서 특징을 잘 살려 어떻게 하라고 설명서 같은 원칙들이 있습니다. 바로 solid 입니다. SRP (Single Responsibility Principle) : 단일 책임 원칙 OCP (Open Close Principle) : 개방 폐쇄 원칙 LSP (Liskov Substitution Principle) : 리스코프 치환 원칙 ISP (Interface Segregation Principle) : 인터페이스 분리 원칙 DIP (Dependency Inversion Principle) :: 의존 역전 원칙 위의.. 2021. 12. 1.
728x90