Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 게시글 목록 api
- 스프링 mvc2 - 검증
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch4
- 스프링 고급 - 스프링 aop
- 타임리프 - 기본기능
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch13
- 스프링 입문(무료)
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch9
- 스프링 db1 - 스프링과 문제 해결
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch3
- 2024 정보처리기사 시나공 필기
- 스프링 mvc2 - 타임리프
- 스프링 mvc1 - 스프링 mvc
- jpa 활용2 - api 개발 고급
- 코드로 시작하는 자바 첫걸음
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch2
- 2024 정보처리기사 수제비 실기
- @Aspect
- 자바의 정석 기초편 ch11
Archives
- Today
- Total
나구리의 개발공부기록
3장 - 애플리케이션 설계 | 섹션18. 객체지향(Object-Oriented), 섹션19. 객체지향 분석 및 설계 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 1강 - 소프트웨어 설계
3장 - 애플리케이션 설계 | 섹션18. 객체지향(Object-Oriented), 섹션19. 객체지향 분석 및 설계
소소한나구리 2024. 4. 17. 12:362024년도 시나공 필기 책 내용 정리
섹션18. 객체지향(Object-Oriented)
1. 객체지향의 개요
- 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어 기계적인 부품들을 조립하여 제품을 만들듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법을 말함
- 구조적 기법의 문제점으로인한 소프트웨어 위기의 해결책으로 채택되어 사용되고 있음
- 소프트웨어의 재사용 및 확장이 용이하여 고품질의 소프트웨어를 빠르게 개발할 수 있고 유지보수가 쉬움
- 복잡한 구조를 단계적, 계층적으로 표현하고 멀티미디어 데이터 및 병렬처리를 지원
- 현실 세계를 모형화하므로 사용자와 개발자가 쉽게 이해할 수 있음
- 주요 구성 요소와 개념에는 객체(Object), 클래스(Class), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 연관성(Relationship)이 있음
2. 객체(Object)
- 데이터와 데이터를 처리하는 함수를 묶어 놓은(캡슐화한) 하나의 소프트웨어 모듈
- 객체의 메소드는 다른 객체로부터 메세지를 받았을 때 정해진 기능을 수행함
데이터 | 객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타냄 속성(Attribute), 상태, 변수, 상수, 자료 구조라고도 함 |
함수 | 객체가 수행하는 기능으로 객체가 갖는 데이터(속성, 상태)를 처리하는 알고리즘 객체의 상태를 참조하거나 변경하는 수단이 되는 것으로 메소드(Method, 행위), 서비스(Service), 동작(Operation), 연산이라고도 함 |
객체의 특성
- 객체는 독립적으로 식별 가능한 이름을 가지고 있음
- 객체가 가질 수 있는 조건을 상태(State)라고 하는데 일반적으로 상태는 시간에 따라 변함
- 객체와 객체는 상호 연관성에 의한 관계가 형성됨
- 객체가 반응할 수 있는 메시지(Message)의 집합을 행위라고하며 객체는 행위의 특징을 나타낼 수 있음
- 객체는 일정한 기억장소를 가지고 있음
3. 클래스(Class)
- 공통된 속성과 연산(행위)을 갖는 객체의 집합으로 객체의 일반적인 타입(Type)을 의미
- 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀
- 객체지향 프로그램에서 데이터를 추상화 하는 단위
- 클래스에 속한 각각의 객체를 인스턴스(Instance)라 하며 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화(Instantiation)라고 함
- 동일한 클래스에 속한 각각의 객체(인스턴스)들으 공통된 속성과 행위를 가지고 있으면서 그 속성에 대한 정보가 서로 달라서 동일 기능을 하는 여러가지 객체를 나타내게 됨
- 최상위 클래스는 상위 클래스를 갖지 않는 클래스를 의미함
- 슈퍼 클래스(Super Class)는 특정 클래스의 상위 (부모) 클래스이고, 서브 클래스(Sub Class)는 특정 클래스의 하위(자식) 클래스를 의미
4. 캡슐화(Encapsulation)
- 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미
- 캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부에서의 접근이 제한적이기 때문에 외부 모듈의 변경으로 인한 파급 효과가 적음
- 캡슐화된 객체는 재사용이 용이하며 객체들 간의 메세지를 주고받을 때 상대 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체 간의 결합도가 낮아짐
5. 상속(Inheritance)
- 이미 정의된 상의 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스(자식 클래스)가 물려 받는 것
- 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고서도 즉시 자신의 속성으로 사용할 수 있음
- 하위 클래스는 상위클래스로부터 상속받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있음
- 상위 클래스의 속성과 연산을 하위 클래스가 사용할 수 있기 때문에 객체와 클래스의 재사용(소프트웨어의 재사용)을 높이이는 중요한 개념
다중 상속(Multiple Inheritance)
- 한 개의 클래스가 두개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것
- 다중 상속은 클래스 계층을 복잡하게 만들어 상속 순서 추적이 어렵고 상위 클래스의 변경이 하위 클래스에 의도하지 않은 영향을 미칠 수 있어 다중 상속을 허용하지 않는 프로그래밍 언어들도 있음
- 다중 상속이 가능한 프로그래밍 언어에서도 다중 상속을 이용할 때에는 이를 고려하여 매우 신중히 사용해야 함
6. 다형성(Polymorphism)
- 메세지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메세지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력을 의미
- 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함
- 응용프로그램상에서 하나의 함수나 연산자가 두개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것
- 예시1) + 연산자의 경우 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열의 연결 기능으로 사용됨
- 예시2) 오버로딩(Overloading)기능의 경우 메소드(Method)의 이름은 같지만 인수를 받는 자료형과 개수를 달리하여 여러 기능을 정의할 수 있음
- 예시3 오버라이딩(Overriding, 메소드 재정의) 기능의 경우 상위 클래스에서 저으이한 메소드와 이름은 같지만 메소드 안의 실행 코드를 달리하여 자식 클래스에서 재정의하여 사용할 수 있음
7. 연관성(Relationship)
- 두 개 이상의 객체(클래스)들이 상호 참조하는 관계를 말함
종류 | 의미 | 특징 |
is member of | 연관화(Association) | 2개 이상의 객체가 상호 관련되어 있음을 의미 |
is instance of | 분류화(Classfication) | 동일한 형의 특성을 갖는 객체들을 모아 구성 |
is part of | 집단화(Aggregation) | 관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는 것 |
is a | 일반화(Generalization) | 공통적인 성질들로 추상화한 상위 객체를 구성하는 것 |
특수화/상세화(Specialization) | 상위 객체를 구체화하여 하위 객체를 구성하는 것 |
섹션19. 객체지향 분석 및 설계
1. 객체지향 분석의 개념
- 객체지향 분석(OOA : Object Oriented Analysis)은 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 이와 연관된 속성과 연산, 그들간의 관계등을 정의하여 모델링 하는 작업
- 소프트웨어를 개발하기 위한 비즈니스(업무)를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석
- 분석가에게 중요한 모델링 구성 요소인 클래스, 객체, 속성, 연산들을 표현해서 문제를 모형화 할 수 있게 해줌
- 클래스로부터 인스턴스화되고, 이 클래스를 식별하는 것이 객체지향 분석의 주요한 목적
2. 객체지향 분석의 방법론
Rumbaugh(럼바우) 방법 | 가장 일반적으로 사용되는 방법으로 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행하는 방법 |
Booch(부치) 방법 | 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 분석 방법으로 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의 |
Jacobson 방법 | Use Case를 강조하여 사용하는 분석 방법 |
Coad와 Yourdon 방법 | E - R 다이어그램을 사용하여 객체의 행위를 모델링하며 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메세지 연결 정의 등의 과정으로 구성하는 기법 |
Wirfs-Brock 방법 | 분석과 설계 간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법 |
3. 럼바우(Rumbaugh) 분석 기법
- 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링 하는 기법으로, 객체 모델링 기법(OMT, Object - Modeling Technique)이라고 함
- 객체 모델링 -> 동적 모델링 -> 기능 모델링 순으로 통해 이루어짐
객체 모델링 (Object Modeling) |
정보 모델링이라고도 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시하는 것 |
동적 모델링 (Dynamic Modeling) |
상태 다이어그램(상태도)을 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는 모델링 |
기능 모델링 (Functional Modeling) |
자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현한 모델링 |
4. 객체지향 설계 원칙
- 시스템 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 다섯가지 원칙
- 다섯가지 원칙의 앞 글자를 따서 SOLID 원칙이라고도 불림
단일 책임 원칙(SRP, Single Responsibility Principle) |
객체는 단 하나의 책임만 가져야 한다는 원칙 응집도는 높고, 결합도는 낮게 설계하는 것을 의미 |
개방 - 폐쇄 원칙(OCP, Open - Closed Principle) |
기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다는 원칙 공통 인터페이스를 하나의 인터페이스로 묶어 캡슐화 하는 방법이 대표적임 |
리스코프 치환 원칙(LSP, Liskov Substitution principle) |
자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행 할 수 있어야 한다는 설계 원칙 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야 함 |
인터페이스 분리 원칙(ISP, Interface Segregation Principle) |
자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙 단일 책임 원칙이 객체가 갖는 하나의 책임이라면 인터페이스 분리 원칙은 인터페이스가 갖는 하나의 책임 |
의존 역전 원칙(DIP, Dependency Inversion Principle) |
각 객체들 간의 의존 관계가 성립될 때, 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙 일반적으로 인터페이스를 활용하면 이 원칙은 준수 됨 |
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 필기 1강 - 소프트웨어 설계' 카테고리의 다른 글
3장 - 애플리케이션 설계 | 섹션22. 코드, 섹션23. 디자인 패턴 (0) | 2024.04.17 |
---|---|
3장 - 애플리케이션 설계 | 섹션20. 모듈, 섹션21. 공통 모듈 (0) | 2024.04.17 |
3장 - 애플리케이션 설계 | 섹션16. 소프트웨어 아키텍처, 섹션17. 아키텍처 패턴 (1) | 2024.04.17 |
2장 - 화면설계 핵심 요약 (0) | 2024.04.16 |
2장 - 화면설계 | 섹션14. UI 상세 설계, 섹션15. HCI / UX / 감성공학 (0) | 2024.04.16 |