OOAD(Object Oriented Analysis and Design)이란?

 

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

 

객체지향적이라는 말은 실재 상황들을 보다 편리하고 빠르게 이용할 수 있게 하는 프로그램을 현실생활에 기초해서 설계한다는 개념이다.

 

☞ 객체지향은 아래의 링크에서 공부하기

'개발/객체지향' 카테고리의 글 목록 :: 개발 메모장 (tistory.com)

 

'개발/객체지향' 카테고리의 글 목록

공부한거 기록하기

travel-diary.tistory.com

 

OOAD 과정

보통 객체지향 분석의 결과물은 객체지향 설계에서 사용된다. 

그러나 분석과 설계는 병행될 수 있다는 점을 참고하자.

 


 

객체지향 분석 (Object Oriented Analysis)

- 문제를 정의하고 이 정의로부터 개념 모델(객체에 대한 추상적 정의)을 사용하여 객체, 관계 및 동작을 식별한다.

 

사물이나 컨셉을 설명하거나 찾아내는 것.

즉, 요구사항을 찾아내고, 그 속의 객체들의 목록을 찾아내는 것

 

OOA 단계

1. 요구사항 도출

 - 소프트웨어가 수행해야 하는 작업과 해결하려는 문제를 정의

 

2. 요구사항 지정

 - 일반적으로 사용사례 및 시나리오 또는 사용자 스토리를 사용하여 요구사항 설명

 

3. 개념 모델(Conceptual model)

 - 중요한 객체를 식별하고 다듬고 관계와 동작을 정의하여 간단한 도표로 표현

 

개념 모델의 종류

1. 객체 모형 (Object Model)

 - 객체들과 그 특성을 식별하여 객체들의 정적 구조(static structure)와 그들과의 관계(Interface)를 보여주는 객체 다이어그램(Object Diagram)을 작성한다.

 

2. 동적 모형 (Dynamic Model)

 - 시간 흐름에 따른 시스템의 변화를 보여주는 상태 다이어그램(State Diagram)을 작성한다. 실시간(real-time) 시스템에서는 반드시 필요하다.

 

3. 기능 모형 (Function Model)

 - 시스템 내에서 데이터 값이 변하는 과정을 보여주는 것으로 잘 알려진 자료 흐름도(DFD)가 사용된다.

 


객체지향 설계 (Object Oriented Design)

- 설계 단계에서는 객체와 그들의 속성(attribute), 동작(behavior), 상호작용(interaction)을 설명한다.

 

즉, OOA를 통해 찾아진 객체들 간의 관계를 설정하는 것.

 

설계 단계에서는...

올바른 요구에 맞는 다양한 다이어그램을 선택하는 것이 중요하다. 

1. 클래스 다이어그램를 사용하여 클래스와 클래스의 관계를 설명
- 필요한 클래스를 시각적으로 나타낸다. 이 단계에서 유전성(Inheritance)이나 다형성(Polymorphism)과 같은 객체 지향적인 원칙에 대해서 구체적으로 알게 된다.

2. 시퀀스 다이어그램를 사용하여 개체 간의 상호작용을 설명

3. 그 외에도 객체간의 상호작용, 시스템의 구조, 시스템의 동작, 어떻게 이벤트에 반응하는지에 대해 표현할 수 있는 다이어그램이 많다.

그리고 소프트웨어 설계 원칙설계 패턴을 적용하여 설계한다.

 

 

객체지향 설계의 종류

1. 시스템 설계(System Design)

 - 시스템의 구조를 서브시스템으로 분해한다. 이 과정중에서 성능 최적 방안, 문제 해결 전략, 자원 분배 등이 확정된다.

 

2. 객체 설계(Object Design)

 - 구현에 필요한 상세한 내역을 설계 모형으로 제작하고 상세화된다. 구체적인 자료구조와 알고리즘 들이 정의된다. 

 



OOAD에서 필요한 각 다이어그램들은 UML 파트에서 자세히 다루도록 한다.

 


 

참고 사이트

OOA/D (Object-Oriented Analysis & Design) 개요 (tistory.com)

 

OOA/D (Object-Oriented Analysis & Design) 개요

# OOA/D (Object-Oriented Analysis & Design) 개요 1) OOA와 OOD의 차이점      - OOA (Object-Oriented Analysis) : 사물이나 컨셉을 설명하거나 찾아내는 것.                      ..

ryudwig.tistory.com

객체지향 개발단계 3가지. (OOA, OOD, OOP) : 네이버 블로그 (naver.com)

 

객체지향 개발단계 3가지. (OOA, OOD, OOP)

객체지향 개발 단계일반적으로 널리 사용되고 있는 분석, 설계, 구현 단계로 분리한다.1. 객체지향 분석(ob...

blog.naver.com

Object-Oriented Analysis And Design — Introduction (Part 1) | by Omar Elgabry | OmarElgabry's Blog | Medium

 

객체지향 프로그래밍이란?

- 객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 

- Object Oriented를 "객체 지향" 보다는 "객체 위주(주되는 것으로 삼는 것)"로 이해하는 것이 편함. 

 

 

Object Oriented Analysis : 객체 갖고 분석하다

Object Oriented Design : 객체 갖고 설계하다

Object Oriented Programming : 객체 갖고 프로그램하기

 

즉, Object Oriented는 객체 가지고 뭔가를 하는 것.

 


Object와 Class

Object

- 각 Object(이하 객체)는 고유한 속성(Attribute)동작(Behavior)이 있다. 개체는 서로 분리되어 있으며 자신의 존재, 다른 대상과 독립적인 자신의 정체성을 가지고 있다. 

- 속성(Attribute)이란 각 개체가 갖는 특징을 말하며 동작(Behavior)은 각 개체가 갖는 행동들을 의미한다.

 

Class

- 클래스는 같은 종류의 집단에 속하는 동작(Behavior)속성(Attribute)을 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형이라고 할 수 있다.  

- 클래스는 표현해야하는 대상들의 공통적인 특징을 서술한 것이다.

 

 

클래스는 객체의 동작과 속성을 식별할 수 있는 곳이다. 따라서 객체의 속성과 동작은 클래스 내부에 정의된다.

Object = Instance (실체)

Class = Abstract (추상)

★다양한 용어들, 그러나 같은 뜻!

- 속성(Attribute) = Data = Member Variable = State = Field

- 동작(Behavior) = Operation = Member Function = Method
- 클래스(Class) = 개념 (Concept) = 타입(Type)
- 객체(Object) = 실체(Instance) = 변수(Variable)

 


객체지향언어의 특징

1. 캡슐화(Encapsulation)

데이터와 코드의 형태를 외부로부터 알 수 없게 하고 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법이다.

 

캡슐화의 가장 큰 장점은 정보 은닉(Information Hiding)에 있다.

외부에서 객체에 접근하는데 있어서 정보를 숨기고 객체의 연산을 통해서만 접근이 가능하게 한다는 것이다.

 

정보 은닉의 장점

  1. 외부에서 특정 객체의 데이터 및 함수에 직접 접근하는 것을 막음으로써 변경하지 못하게 함.

  2. 유지보수나 확장 시 오류의 범위를 최소화

  3. 객체 내 정보손상, 오용 방지

  4. 독립성 : 조작법이 바뀌어도 사용방법 자체는 바뀌지 않고 데이터가 변경되어도 다른 객체에 영향을 주지 않음.

  5. 이식성 : 처리된 결과를 바로 사용

  6. 객체의 모듈화 : 새로운 시스템 구성에 하나의 모듈처럼 사용 가능

 

2. 상속(Inheritance)

상위 클래스의 모든 것을 하위 클래스가 모두 이어 받는 것이다.

즉, 부모가 자식에게 유전자를 물려주듯이 부모의 특징을 자식에게 모두 물려준다. 

 

하위 클래스는 상위 클래스의 모든 속성과 연산을 재정의 하지 않아도 속성으로 사용할 수 있고, 거기에 추가로 새로운 속성과 연산을 추가하여 사용할 수 있다. -> 재사용성 증가

 

3. 다형성(Phlymorphism)

상속과 연관이 있는 개념으로 한 객체가 다른 여러형태의 객체로 재구성 되는 것을 말한다.

쉽게 말하면 한 부모의 밑에서 태어난 자식이 똑같지는 않은것과 같다고 볼 수 있다.

자바의 오버로드(Overload) 또는 오버라이드(Override)이 다형성의 대표적인 예라고 할 수 있고, 이 것을 구현하는 것을 오버로딩(Overloading)과 오버라이딩(Overriding)이라고 한다.

 

간단히 말해 같은 명령을 각기 다른 오브젝트에 줄 수 있다는 뜻이다.

 

4. 추상화(Abstraction)

객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다.

다시 말하면 실제로 존재하는 객체들을 프로그램으로 만들기 위한 공통적인 특성을 파악해서 필요없는 특성을 제거하는 과정을 가리킨다. -> 모델화

 

추상화는 최소의 비용으로 실제 상황에 대처할 수 있고, 시스템의 구조 및 구성을 가시적으로 볼 수 있다.

 


객체지향언어의 장점과 단점

장점

1. 재사용성

 - 상속을 통해 프로그래밍 시 코드의 재사용을 높일 수 있다.

 

2. 자연스런 모델링

 - 우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.

 

3. 생산성 향상

 - 잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있다.

 

4. 점진적 개발

 

5. 견고한 의미적 모델링

 

6. 명확한 인터페이스 기술

 

7. 보안

 

8. 유지보수의 용이성

 - 프로그램 수정 시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라 할 수 있다.

 

단점

1. 개발속도가 느림

 - 객체가 처리하려는 것에 대한 정확한 이해가 필요하기 때문에 설계단계에서부터 많은 시간이 소요된다.

 

2. 실행속도가 느림
 - 객체지향언어는 대체적으로 실행속도가 느리다.

 

3. 코딩난이도 상승

 

 

 

참고 사이트

The Story of Object-Oriented Programming | by Omar Elgabry | OmarElgabry's Blog | Medium

 

The Story of Object-Oriented Programming

The interesting story of the object-oriented programming.

medium.com

객체지향 개념 (쫌 아는체 하기) (slideshare.net)

 

객체지향 개념 (쫌 아는체 하기)

객체지향의 개념을 명시적(definitive)으로 정의하고 설명하고, 구조적 방법과 비교한 발표자료 입니다.

www.slideshare.net

객체 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

객체 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전

객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러

ko.wikipedia.org

[C++] 객체지향 언어의 5가지 특징 (tistory.com)

 

[C++] 객체지향 언어의 5가지 특징

객체지향 기법의 특징은 크게 5가지가 있습니다. 캡슐화, 정보은닉, 추상화, 상속성, 다형성이 바로 그것이며 이중 구조적 기법과 차별되는 개념은 캡슐화, 상속성, 다형성 입니다.  객체지향

coding-factory.tistory.com

객체지향 언어의 장점과 단점, 개념, 종류, 절차지향 언어와 비교 (tistory.com)

'개발 > 객체지향' 카테고리의 다른 글

OOAD(Object Oriented Analysis and Design) 이란?  (0) 2021.12.16

채돈이영통점
경기 수원시 영통구 청명남로34번길 21


예전에 곰둥이와 즐겨 가던 채돈이가 영통에도 생겼다.
회식 오기 전에 사전조사로 ㅋㅋ 미리 왔었는데
그때 사장님과 꼭 회식오겠다고 약속했는데 그 약속을 오늘에서야 지킨다 :)
(사장님 서비스 없나요?)





채돈이 입구는 요로케 소박하다.
주변에 고깃집이 옴~~총 많은데 그중에 (돼지고기 중) 최고 맛집!

전에 왔을때 정말 느어무 더웠는데 에어컨을 고치셨다한다.
이제 시원하게 고기먹을수 있당!


열심히 메뉴판 찍고있으니 사장님께서 직접 제공해주신 고오급(화질) 메뉴판
근고기 2~3인분 주문! (하고 또 2~3인분 주문)



아름다운 자태를 가진 근고기가 등☆장
저번주에 제주도 가서 제주도 근고기 먹었는데 진짜 채돈이 생각이 많이 나드라....
어째서 제주도인데 채돈이보다 못할수가?😫
그러니 제주도에서 근고기 드시지마시고 채돈이로....
(돈받고 광고하는거 아님..)




일하시는 분께서 예쁘게 고기를 잘라주셨다.
요즘 고기를 구워주는 고깃집이 많은데 채돈이만큼 맛있게 구워주는데는 솔직히 못봤다...
(돈받고 광고하는거 아님... 진짜 맛있음...)




얘는 마지막쯤 먹는 비계섞인 오겹살
나는 원래 비계를 안 좋아하기 때문에 얘보단 살코기만 있는 목살이 좋다.
여기는 목살도 엄청 촉촉하고 부드럽다.
이 예쁜 고기한점을 파절이랑 한입하면 천국♡




얘는 마지막으로 먹는다는 김치찌개 국밥.
나는 다이어트를 하는 중이기 때문에 얘는 패스하도록 한다.
그냥 숟가락에 묻어있는거 맛봤는데 맛있었당....




아마 이곳은 두고두고 생각날 나의 근고기 인생 맛집...♡
솔직히 여기와서 맛읎단사람 없을것같당 ㅠ



+ 추가
대박. 사장님이 진짜 서비스를 주심 😆

서비스 주신다고 고르라해서
날이더우니 냉면🍲!!!!!!
저번에도 고기랑 먹었었는뎅 요기 냉면도 맛있다 ㅋㅋㅋㅋ
난 개인적으로 비빔냉면에 육수를 부어먹는뎅
오늘은 내가 먹지 않고 다른분께 양보해드림! 🤗

 

+ Recent posts