✊ 필오의 개발일지
Back to Posts
2018년 10월 1일

CodeSpitz78 4/ OOAD와 테트리스 (1)

CodeSpitz78 4/ OOAD와 테트리스 (1)

🌕🌑🌑

🔥 코드스피츠 수업을 수강하면서 복습한 내용을 정리했습니다. OOA, OOD까지만의 내용만 다루었습니다. 강의와 추가로 찾아본 자료와 섞여있습니다.


1. 개요 ### 1-1 OOAD? 개념 (Object-Oriented Analysis and Design) 소프트웨어를 개발하는 하나의

방법론으로 모든 소프트웨어 시스템의 주요 기본요소를 사물을 가리키는 객체와 그 객체들을 하나의 집합으로 묶은 클래스로 구성하는 객체지향적인 분석과 설계 방법을 말한다. 객체지향적이란 것은 현실세계에 실재하는 사물, 즉 객체들을 지향한다는 것이다.



1-2 객체 지향의 키워드

1-2-1 클래스 class => 추상 (abstract)

클래스는 추상, 오브젝트는 클래스가 실체로 만들어진 것

클래스 클래스는 표현 대상들의 공통적인 특징에 대한 서술(추상)을 말한다

추상 추상은 사용자가 구체적인 내용을 생각하지 않고도 사용할 수 있는 기능


1-2-2 오브젝트 object => 실체 (instance)

오브젝트는 클래스의 인스턴스이다. 오브젝트는 instance of class => 클래스가 실체로 만들어진 것.

cf__ 다양한 용어지만 같은 뜻


1-2-3 캡술화 encapsulation

데이터와 (data) 데이터를 다루는 방법을 (operation on data) 묶는 것

최대한 은닉하고 최대한 캡슐화해서 상대방과 대화한다.


1-2-4 상속성 inheritance

하나의 클래스가 가지고 있는 특징들(데이터 + 조작)을 그대로 다른 클래스가 물려 받는 것


1-2-5 다형성 polymorphism == 내적 동질성

상속성의 계층을 따라서 각각의 클래스에 한가지 이름을 줄 수 있다.

Dog d; d = new Poodle() d.bark() d = new Bulldog() d.bark() d = new Husky() d.bark()

cf__ 메세지 전달 message passing 객체지향관점에서 프로그램은 오브젝트에 message를 보내는 것으로 실행


객체지향 프로그래밍은 패러다임(관점) 중 하나이다.



1-3. 객체지향 분석 및 설계 1. 문제영역에서 배우(actor)를 찾아내고 2. 각 배우들의 책임과 역할을

정의하고 3. 배우들간의 관계를 지정하고 4. 각 배우들에 대한 대본(script)를 쓴다.

👇

  1. 식별하고
  2. 일반화하고(object, class),
  3. 대상들 간의 관계 (inheritance, embedded)를 설정하고,
  4. 상호작용 하도록(behavior)한다.

👇

도메인 => 도메인 개념의 시각화 => 설계 객체를 구현

  1. use case 정의
  1. 도메인 모델 정의
  1. 인터렉션 다이어그램 정의
  1. 설계 클래스 정의

난감한 도메인을 만났을때 우리는 어떻게 데이터 분석을 해서 처리할 수 있는가 ⇒ 데이터 분석의 결과가 객체지향이 될 수 있게 하는 것이 우리의 목표



2. 추상화 Abstraction

: 대상에서 특징만 뽑아낸 것 : 사람은 상징체계를 만들고, 발전시켜 다음 세대애 물려준다. (=> 추상화 능력) 객체지향은 기본적으로 추상화 라는 영역에 속해 있다.


2-1. Categraization 분류를 일정한 기준으로 묶어 놓는 것. 디테일을 숨기고 카테고리의 특징만

뽑아내서 이해하게 된다.


2-2. 모델링 현실세계에 있는 실물에서 내가 기억해야할 것들을 모아 놓은 것.

모델링에서 가장 중요한 것


2-3. 집합 - 가장 기초적인 추상화 - 그냥 모아놨기 때문에 카테고라이제이션이라고 하지 않는다. -

무작위 적인 그룹핑을 시킬 수 있다.



3. 테트리스 OOAD 카테고라이제이션으로 관리할 수 있나? 그냥 그룹화해서 관리할 수 있나? 본인이

역할(role)과 책임이 있나? 권한과 책임을 일치하게 나눌 수 있냐..

cf__설계시 유의해야할 점

- 혹시나 하는 의존성을 찾기 위해서 전체 그림을 그려본다. - UML - 설계시에는 simplex를 유지하자.

인지하기 쉬운 객체 찾기

DATA (프로토콜)

프로토콜을 적용하냐 마냐는?

변화율에 따라서! 변화율이 극심한 경우에는 중간에 반드시 프로토콜을 넣어주어야한다!


참고자료 OOAD : http://dollipolly.tistory.com/entry/OOAD-Object-Oriented-Analysis-Design  http://egloos.zum.com/nom3203/v/2502870  객체지향 : https://www.slideshare.net/plusjune/ss-46109239 

PreviousCodeSpitz78 5/ OOAD와 테트리스 (2)
NextCodeSpitz78 3/ (stack 구조) HTML parser ✨✨

Related

© 2025 Felix