본문 바로가기
반응형

전체 글149

3. 역할, 책임, 협력 - 4 코드스피츠 3강 강의 코드스피츠 83 오브젝트 - 3회차 객체망과 객체간 통신 설계란 구동하고 있는 코드를 어떻게 배치할 것인가의 문제이다. 객체 : 내부상태는 캡슐화 외부소통은 메소드(정보은닉) 객체끼리 메세지를 주고 받는다. 형(type)으로 개발해야 객체지향으로 쓴다 도메인을 객체망의 협력의 메세지망으로 표현할 수 있는가가 관건 순환하는 망이 생기면 안됨. 비선형 망이 생기게 해야함 의존성은 제거할 수 없다. 의존성은 필요하니까 만든것 의존성을 심플렉스로 만드는 것이 중요 단방향으로 만드는 것이 중요 객체설계 난점 인터페이스의 그룹화 도메인A관점 도메인B관점 네트웍관점 모델링관점 여러 관점을 수용하는 객체 다양한 객체 알려진 기본 설계요령 SOLID 원칙 SRP Single Responsibilit.. 2022. 10. 14.
3. 역할, 책임, 협력 - 3 오브젝트 책(챕터3: 역할, 책임, 협력) 목차 역할 역할과 협력 유연하고 재사용 가능한 협력 객체 대 역할 역할과 추상화 배우와 배역 챕터3 역할, 책임, 협력에서 역할에 대해 다루려고 합니다. 역할 역할과 협력 객체는 협력이라는 주어진 맥락 안에서 특정한 목적을 갖게 된다. 객체의 목적은 협력 안에서 객체가 맡게 되는 책임의 집합으로 표시된다. 역할: 객체가 어떤 특정한 협력 안에서 수행하는 책임의 집합 협력을 모델링할 때는 특정한 객체가 아니라 역할에게 책임을 할당한다고 생각하는 것이 좋다. → 역할에 특별한 이름을 부여하지는 않았지만 실제로는 익명의 역할을 찾고 그 역할을 수행할 수 있는 객체를 선택하는 방식으로 설계가 진행됐다고 생각하는 것이 자연스럽다. 유연하고 재사용 가능한 협력 역할이 중요.. 2022. 10. 14.
3. 역할, 책임, 협력 - 2 오브젝트 책(챕터3: 역할, 책임, 협력) 목차 책임 책임이란 무엇인가 책임 할당 책잉 주도 설계 메시지가 객체를 결정한다 행동이 상태를 결정한다 챕터3 역할, 책임, 협력에서 책임에 대해 다루려고 합니다. 책임 책임이란 무엇인가 책임: 협력에 참여하기 위해 객체가 수행하는 행동 객체의 책임은 객체가 ‘무엇을 할 수 있는가’와 ‘무엇을 알고 있는가’로 구성된다. 하는 것 객체를 생성하거나 계산을 수행하는 등의 스스로 하는 것 다른 객체의 행동을 시작시키는 것 다른 객체의 활동을 제어하고 조절하는 것 아는 것 사적인 정보에 관해 아는 것 관련된 객체에 관해 아는 것 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것 협력 안에서 객체에게 할당한 책임이 외부의 인터페이스와 내부의 속성을 결정한다. 중요한 .. 2022. 10. 14.
3. 역할, 책임, 협력 - 1 오브젝트 책(챕터3: 역할, 책임, 협력) 목차 협력 영화 예매 시스템 돌아보기 협력 협력이 설계를 위한 문맥을 결정한다. 챕터3 역할, 책임, 협력에서 협력에 대해 다루려고 합니다. 객체지향 패러다임 관점에서 핵심은 역할(role), 책임(responsibility), 협력(collaboration)이다. 객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다. 객체지향 설계의 핵심은 협력을 구성하기 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다. 어플리케이션의 기능을 구현하기 위해 1.어떤 협력이 필요하고 2.협력을 위해 어떤 역할과 책임이 필요한지 먼저 고민 구현부터 초점을 맞추면 변경하기 어렵고 유연하지 못한 코드를 낳는 원인이 된다. 역할, 책임, 협력이 제자리를 찾지 못하면.. 2022. 10. 14.
2. 객체지향 프로그래밍 진정한 객체지향 패러다임으로의 전환은 객체에 초점을 맞출 때 얻을 수 있다 클래스가 아니다. 객체지향 프로그래밍을 할 때 집중해야할 두가지 1. 어떤 클래스가 필요한지 고민하기 전에 어떤 객체들이 필요한지 고민하라 (클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것) → 시나리오를 만들자 2. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다. 2-1. 객체들의 모양과 윤곽 잡기 2-2. 공통된 특성과 상태를 가진 객체들을 타입으로 분류하기 2-3. 이 타입을 기반으로 클래스를 구현하기 도메인: 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야 소프트웨어는 사용자가 원하는 어떤 문제를 해결하기 위해 만들어진다. 객체지향 패러다임이 강력한 이유 : .. 2022. 10. 14.
1. 객체, 설계 오브젝트 책과 코드스피츠 오브젝트 강의에 대한 내용입니다. 내용: 책 1장 객체, 설계 코드스피츠 오브젝트강의 1강 핵심: 역할 모델에 따른 로직의 격리, 프로그래밍의 격리 목적: 역할 모델에 따른 설계의 경지에 도달 역할 모델을 이해하기 위해 Abstraction(추상화)에 대해 이해해야함 Generalization : 일반화 - modeling, function, algorithm Association : 연관화 - reference, dependence Aggregation : 집단화 - group, category 코드스피트 오브젝트강의 1강: https://www.youtube.com/watch?v=sWyZUzQW3IM&list=PLBNdLLaRx_rI-UsVIGeWX_iv-e8cxpLxS 2022. 10. 14.
오브젝트 오브젝트 책에 대한 내용을 작성해보려고 합니다. - 객체지향이란 객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작합니다. 두번째 걸음은 객체를 독립적인 존재가 아니라 기능을 위해 협력하는 공동체의 존재로 바라보는 것입니다. 세번째는 "협력에 참여하는 객체들에게 얼마나 적절한 책임을 부여할 수 있는가"입니다. 마지막 걸음은 앞에서 설명한 개념들을 여러분이 사용하는 프로그래밍 언어라는 틀에 흐트럼 없이 담아낼 수 있는 기술을 익히는 것 입니다. 2022. 10. 14.
String 배열안에 원소별로 정렬하기[Java] 원소별로 정렬하는 메소드 : private static String[] sortValues(String[] arr) public class Main { public static void main(String[] args) { String[] arr = {"ecfagdb", "dqsdmqa", "bdadqc"}; System.out.print("정렬 전 원소별 순서: "); for (String s : arr) { System.out.print(s + " "); } System.out.println(); System.out.print("정렬 후 원소별 순서: "); String[] answer = sortValues(arr); for (String s : answer) { System.out.print(s.. 2022. 10. 4.

반응형
반응형