다양한 기록

객체지향 개발 방법론 정리 본문

소프트웨어공학

객체지향 개발 방법론 정리

라구넹 2024. 10. 28. 18:34

객체지향이란:

객체를 중심으로 객체들 간의 상호 작용으로 프로그램을 나타내는데, 객체는 변수(데이터)와 변수와 관련된 함수(메소드)들로 묶여 구성된다. 또한 객체는 자신이 맡은 일을 할 책임을 가지고, 다른 객체들이 구체적으로 어떻게 동작하는지 알지 '않고', 무엇을 하는지 알고 그에 따라 상호작용을 할 책임이 있다.

 

구조적 개발론 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