일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 운영체제
- DSP
- 유스케이스
- linear difference equation
- ret2libc
- dtft
- Frequency Response
- STCF
- 게임 개발
- sampling theory
- 메카님
- MLFQ
- SNR
- Unity #Indie Game
- 배경 그림
- pdlc
- polymorphism
- frequency-domain spectrum analysis
- convolution
- Security
- AINCAA
- MAC
- 유니티
- Race condition
- stride
- DP
- link layer
- 게임개발
- information hiding
- dirty cow
- Today
- Total
다양한 기록
객체지향 개발 방법론 정리 본문
객체지향이란:
객체를 중심으로 객체들 간의 상호 작용으로 프로그램을 나타내는데, 객체는 변수(데이터)와 변수와 관련된 함수(메소드)들로 묶여 구성된다. 또한 객체는 자신이 맡은 일을 할 책임을 가지고, 다른 객체들이 구체적으로 어떻게 동작하는지 알지 '않고', 무엇을 하는지 알고 그에 따라 상호작용을 할 책임이 있다.
구조적 개발론 vs. 객체지향 개발론
- 구조적 개발론
함수를 모듈 기본으로 구성
함수끼리 변수를 공유해서 변수에 문제가 생기면 다른 함수에도 영향
Data structure + Functions = Program
- 객체 지향 개발론
객체를 모듈의 기본 단위로 구성
객체가 변수를 개별적으로 가져서 다른 객체의 함수까지 영향 x
Data Structures + Functions = Object
Objects + Objects = Program
네가지 대표적인 개념이 있는데 캡슐화, 정보 은폐, 다형성, 상속(Hierarchy)이다.
이때 정보 은폐 대신 추상화를 넣기도 하는데 비슷하면서도 다른 개념이다.
캡슐화 (Encapsulation)
- 관련 있는 것끼지 묶는다
- 데이터 + 데이터와 관련된 연산
- 데이터를 중심으로 해당 데이터를 사용하여 처리하는 오퍼레이션들의 묶음
정보 은폐 (Information Hiding)
- 객체를 하나의 Black box로 취급
- 일부는 완전히 은폐, 일부는 공개 .. public, private
추상화 (= 간략화, 요약 .. Abstraction)
- 어떤 사물에 대하여 내부의 세세한 것은 숨기고 외부에는 중요한 특징만 공개
- 요약일 수도 있고(캡슐화+정보은폐), 상위 클래스의 내용을 하위 클래스에서 구현한다는 의미의 추상일 수도 있음
다형성 (Polymorphism)
- 같은 이름의 함수나 메서드가 다양한 방식으로 동작할 수 있도록 하는 것
- 코드의 재사용성과 확장성을 높이고, 가독성과 유지보수성을 향상
펑션 오버로딩
- 동일한 이름의 오퍼레이션이라도 오퍼레이션이 일어나는 클래스에 따라 행동이 다름
- 각 클래스마다 자신의 오퍼레이션이 어떻게 행동하는지 앎
연산자 오버로딩
- 일반적인 연산자(+,-) 등이 다른 비슷한 용도로 사용될 수 있도록 함
메소드 오버로딩
- 한 클래스 내에서 이름이 같고 매개 변수나 타입만 다른 메소드들이 여러 개 구현되어 있을 수 있음
- 메소드를 호출하면 시스템은 인자의 수와 타입에 일치하는 메소드 구현을 선정하여 실행
메소드 오버라이딩
- 상속받은 메소드에 대해 서브 클래스가 이를 무시하고 재정의
- 메호드 이름과 매개 변수가 같으면서 구현이 다른 메소드가 클래스의 계층 상 여러 개 존재할 수 있음
- 한 클래스의 참조 변수가 계층 상의 여러 클래스 참조 가능
- 시스템이 실행 시간에 객체의 클래스를 판단해서 그 클래스에서 구현된 메소드 실행 (동적 바인딩)
상속 (Inheritance, Hierachy)
- 일반적으로 객체 지향은 평평한 구조인데, 상속에서는 계층 구조임
- 상위 클래스의 속성 또는 행위를 하위 클래스가 상속하여 재사용하는 것을 의미
Generic Class
- 클래스 안의 데이터의 타입을 미리 정하지 않고 객체를 생성할 때 그 타입을 선언하여 만들 수 있게 함
Advantages of OO
1. 생산성 향상
2. 자연스러운 모델링 (실제 세계의 사물과 개념을 코드로 표현하는데 적합)
3. 변경에 유연함
4. 재사용 가능
5. 유지보수 용이
6. 안정적임
'소프트웨어공학' 카테고리의 다른 글
MIS, CRM, ERP, SCM (0) | 2024.10.29 |
---|---|
컴포넌트 (Component) (0) | 2024.10.28 |
Agile Process - Scrum (0) | 2024.10.28 |
Agile Process - Kanban, Lean (0) | 2024.10.28 |
Generic Software Process Models (Life Cycle Models) (0) | 2024.10.26 |