본문 바로가기

OOP44

[객체지향과 스프링의 이해] 0. Intro 이 글은 2023 GDSC Sookmyung Core Member Session을 텍스트로 정리한 것입니다. (사실 대본 작성하는 김에 쓴거예요-!!) 영상으로 보고 싶으신 분들은 이 링크를 참고해주세요. 대부분의 내용은 조영호 님의 , , 이일민 님의 을 참고했습니다. 소개글 안녕하세요. 라는 주제로 세션을 진행하였습니다. 이 세션은 객체지향의 가치와 목적을 다루고, 객체지향적인 코드를 얻기 위해서 어떤 시도를 할 수 있는지 알아봅니다. 그리고 객체지향이라는 가치가 스프링에서 어떤 의미를 가지는지, 스프링을 제대로 사용하기 위해서는 어떻게 코드를 작성해야하는지 등을 다룹니다. 이 세션은 코드로 이해하는 객체지향, 객체지향으로 이해하는 스프링이라는 두 가지 주제로 구성되며, 첫번째 주제에서는 절차지향적인.. 2023. 5. 30.
2장 객체지향 프로그래밍 2장에서 기억하고 싶은 것 객체지향이 강력한 이유 : 요구사항 분석부터 구현까지 도메인이라는 일관된 추상화 기법을 사용함 객체 지향의 본질 : 말 그대로 ‘객체’를 지향하는 것 객체지향 설계의 핵심 : 적절한 협력을 식별하고 협력에 필요한 역할을 정의한 후에 역할을 수행할 수 있는 적절한 객체에게 적절한 책임을 할당하는 것이다. 캡슐화 : 절차지향 접근법과 비교했을 때 객체지향 접근법의 차이는 객체를 자율적인 존재로 만드는 것이다. 그러기 위해서는 객체가 상태와 프로세스를 함께 가지면서 자신의 상태를 자기만 변경할 수 있어야 한다. 객체의 접근제어 : 객체의 캡슐화를 통해 상태를 변경할 수 있는 주체는 자신으로 제한했다. 객체들이 협력하는 과정에서 어떤 객체의 상태 변화를 기대한다면, 해당 객체에게 상태.. 2023. 4. 29.
헤드 퍼스트 디자인 패턴 서평 놀러와요 깃헙 https://github.com/Mingadinga/2023-Design-Pattern GitHub - Mingadinga/2023-Design-Pattern: . Contribute to Mingadinga/2023-Design-Pattern development by creating an account on GitHub. github.com 드디어 헤드 퍼스트 디자인 패턴을 다 읽었다~! 원래 여행 출발 전까지(1월 중순) 다 읽는게 목표였는데 계절학기에 여행 준비가 겹쳐 2월 중순에 끝냈다😅 대신 신나게 놀고 돈 쓰고 면허도 땄다. 번아웃을 완전 극복한 갓생걸이다. 생각보다 별거인 헤드 퍼스트 책을 읽기 전에는 헤드 퍼스트니까 가벼운 마음으로 읽어야겠다는 마음으로 시작했다. 표현 방.. 2023. 2. 28.
MVC (아키텍처 패턴) 핵심 의도 모델-뷰-컨트롤러는 사용자에게 화면을 통해 입력을 받아 애플리케이션의 기능을 실행하는 프로그램에 적용할 수 있는 패턴이다. MVC는 옵저버, 전략, 컴포지트 패턴으로 이루어진 복합 패턴이다. 복합 패턴을 통해 서로 느슨하게 결합되므로 깔끔하면서 유연하고 재사용 가능한 구현이 가능하다. 적용 상황 클라이언트에게 화면을 보여주고 뒷단에서 처리하는 대부분의 프로그램에 적용 가능하다. 웹, 특히 클라이언트-서버 애플리케이션 구조에 MVC를 적응시켜주는 다양한 웹 MVC 프레임워크가 있다. 솔루션의 구조와 각 요소의 역할 객체에게 책임을 분할하기 사용자에게 화면을 보여주고 명령을 받아 실행하는 애플리케이션의 책임을 나열해보자. 우선 사용자에게 화면을 만들어 보여주는 책임(뷰), 애플리케이션 기능을 구현.. 2023. 2. 24.
Proxy 핵심 의도 특정 객체로의 접근을 제어하는 대리인을 제공한다. 클라이언트가 실제 객체의 메소드를 호출하면 그 호출을 중간에 가로챈다. 적용 상황 사용되는 상황이 많은데, 공통점은 클라이언트가 진짜 객체에 직접 메시지 요청을 보내지 않도록 한다는 점이다. 진짜 객체에 바로 메시지가 가기 전에 접근을 제어해야 할 때 사용한다. 원격 프록시 - 원격 객체로의 접근을 제어한다. 서로 다른 JVM에 존재하는 객체는 직접 데이터를 주고받을 수 없으므로 프록시 객체를 통해 접근을 제어한다. 원격 프록시는 접근을 제어해 네트워크 관련 사항을 처리한다. 가상 프록시 - 생성하는데 많은 비용이 드는 객체를 대신한다. 진짜 객체가 필요한 상황이 오기 전까지 객체의 생성을 미루거나 객체를 대신한다. 객체 생성이 끝나면 진짜 객.. 2023. 2. 24.
State 핵심 의도 상태 패턴을 사용하면 내부 상태가 바뀜에 따라 객체의 행동을 바꿀 수 있다. 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 적용 상황 상태 다이어그램을 구현할 때 사용할 수 있다. 특히 상태에 따라 행동이 바뀌는 경우에 적합하다. 상태를 캡슐화하지 않고 그대로 조건문으로 행동을 처리하면 수많은 조건문으로 인해 가독성이 떨어지고 관리가 어려워진다. 상태 패턴은 상태와 함께 관련된 행동을 캡슐화하므로, 상태 변경을 통해 행동을 변경할 수 있다. 솔루션의 구조와 각 요소의 역할 객체에게 책임을 분할하기 상태 다이어그램을 생각해보면, 각각의 상태를 나타내는 책임과 상태를 가지고 관리하고 변경하는 책임이 필요하다. 상태는 여러개 존재하므로 State라는 공통 인터페이스를 따르게 하고, 상태를.. 2023. 2. 24.