본문 바로가기

객체지향8

스프링 - 스프링과 객체지향 설계 feat. 다형성, SOLID 들어가기에 앞서... 스프링과 객체지향 설계를 제대로 이해하기 위해서 필요한 2가지 다형성 객체지향 설계의 5가지 원칙 (SOLID) 1. 다형성 스프링의 핵심 스프링은 자바 기반의 프레임워크이다. 자바 언어의 가장 큰 특징은 객체 지향 언어라는 점이다. 스프링은 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크이다. 객체지향 특징 추상화 캡슐화 상속 다형성 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 또한 객체지향 프로그래밍은 프로그램을 유연하고 변경.. 2022. 4. 13.
객체지향(7) - 정리 이 장의 목표는 1장부터 6장까지 다룬 내용을 동작하는 코드를 통해 정리하는 것입니다. 7장을 읽고 나면 추상적으로 흩어져 있던 개념들이 좀더 명확하고 구체적인 실체로 다가올 것입니다. 이번 장에서는 커피 전문점과 관련된 간단한 예제로 시작할 것이며, 예제를 통해 다음의 두가지 목표를 달성할 것입니다. 첫 번째 목표는 도메인 모델에서 시작해 최종 코드까지의 구현 과정을 간략하게나마 설명하는 것 두 번째 목표는 구현 클래스를 개념관점, 명세관점, 구현관점에서 바라본다는 것이 무엇을 의미하는지 설명하는 것 마틴 파울러는 객체지향 설계 안에 존재하는 세 가지 상호 연관된 관점에 관해 설명합니다. 파울러는 세 가지 관점을 각각 개념관점, 명세 관점, 구현 관점이라고 부릅니다. 개념관점 : 개념관점에서 설계는 도.. 2022. 3. 17.
객체지향(6) - 객체 지도 이번장에서는 객체지향이 구조와 기능이라는 두 가지 관점을 어ᄄᅠᇂ게 조화시키는에 관해 설명합니다. 구조는 기능에 비해 변화에 더 안정적입니다. 따라서 객체지향 패러다임은 객체들의 구조안에 기능을 녹임으로써 변화에 안정적인 소프트웨어를 개발할 수 있게 합니다. 만약 도메인 모델에 관해 들어본 적이 있다면 이번 장에서 도메인 모델과 객체지향 패러다임 사이의 관계를 이해하게 될 것입니다. 또한 자주 변경되는 기능이 아니라 안정적인 구조를 기반으로 시스템을 분할하는 객체지향적인 접근법은 역할, 책임, 협력을 기반으로 시스템의 기능을 구현하는 책임-주도설계의 본질을 이해하는 데도 도움이 될 것입니다. 기능을 중심으로 구조를 종속시키는 접근법은 범용적이지 않고 재사용이 불가능하며 변경에 취약한 모델을 낳게 된다. .. 2022. 3. 17.
객체지향(5) - 책임과 메시지 이번 장에서는 훌륭한 메시지가 훌륭한 객체지향의 설계의 기반이라는 사실을 강조합니다. 객체의 자율성과 설계의 유연성은 얼마나 훌륭한 메시지를 선택하느냐에 달려 있습니다. 여러분이 이 책에서 단 하나의 장만 읽겠다고 한다면 5장을 읽기를 권해드리겠습니다. 훌륭한 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계다. 역할과 책임이 흐릿할수록 발작을 일으키는 객체를 도와줄 어떤 협력자도 찾지 못할 것이다. 자율적인 책임 설계의 품질을 좌우하는 책임 객체들은 애플리케이션의 기능을 구현하기 위해 협력하고, 협력 과정에서 각자 맡은 바 책임을 다하기 위해 자율적으로 판단하고 행동한다. 여기서 키워드는 "자율성"이다. 타인이 정한 규칙이나 명령에 따라 판단하고 행동하는 객체는 자율적인.. 2022. 3. 17.
객체지향(4) - 역할, 책임, 협력 이 장에서는 객체지향 설계의 가장 중요한 재료인 역할, 책임, 협력에 관해 설명합니다. 객체들은 협력에 참여하기 위해 특정한 역할을 맡고 역할에 적합한 책임을 수행하게 됩니다. 대부분의 사람들은 객체지향이라는 말에서 클래스와 상속을 떠올리겠지만 4장을 읽고나면 역할, 책임, 협력이 객체지향의 핵심이라는 사실을 알게 될 것입니다. 객체지향에 갓 입문한 사람들의 가장 흔한 실수는 협력이라는 문맥을 고려하지 않은 채 객체가 가져야할 상태와 행동부터 고민하기 시작한다는 것이다. 중요한 것은 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이다. 객체지향 설계의 전체적인 품질을 결정하는 것은 객별 객체의 품질이 아니라 여러 객체들이 모여 이뤄내는 협력의 품질이다. 훌륭한 객체지향 설계자는 객체들 간의 요청과 응답 .. 2022. 3. 17.