객체지향방법론은 객체를 이용한 방법론, 즉 프로그래밍 순서에 의존한다기 보다 각 객체에 생기를 불어넣고 객체간에 메시지 교류를 통한 프로그래밍 방법이다.
조금 더 거창하게 기술적으로 정의하면, '현실세계에서 개체(Entity)를 데이터 속성(Attribute)과 메소드(Method)를 결합시킨 형태로 표현하고, 객체(Object)간의 메시지 통신을 이용하여 프로그램을 개발하기 위한, 절치 및 기법, 도구 등을 제시한 이론적 체계'이라고 할 수 있다.
여기서 객체란 정의에서 본 바와 같이 개체, 속성, 메소드로 구성된 구성체를 의미하고,
객체지향은 객체를 이용해서 프로그래밍 하는 것을 지향한다라는 의미로, '클래스'라는 큰 틀을 이용해 객체를 만들고, 객체 간의 상호작용을 통해 애플리케이션을 개발하는 패러다임이라고 볼 수 있다.
또한 SDLC(소프트웨어 개발 라이프사이클)에 SW 공학을 적용하여 절차, 단계, 기법, 도구, 산출물을 모두 포함하는 실무적인 이론 체계를 의미한다.
OOP(Object Oriented Programming)
: 문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로, 객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론이다.
OOP는 코드 재사용성과 생산성의 향상 효과를 볼 수 있고, 유지보수의 편의성 덕택에 협업이 중요하고 규모가 큰 대형 프로젝트에 사용되는 프로그래밍 이론이다.
OOP특징
추상화(Abstraction)란 객체지향 이전에도 많이 다루었던 설계 개념으로,
'불필요한 세부사항은 배제하고, 핵심되는 공통사항을 묶어 개량화하는 작업'을 말합니다.
크게 기능추상화와 자료추상화, 제어추상화로 구분할 수 있습니다.
캡슐화(Encapsulation)는 객체지향 그 자체를 설명하는 개념으로 볼 수 있는데,
속성과 메소드와 같은 각 알맹이들을 하나의 캡슐 안에 넣어서, 안에 무엇이 들어있는지 모르게도 할 수 있고, 한 입에 먹어 삼킬 수 있게 하는 작업이다.
상속성과 다형성은 객체지향만의 특성으로 볼 수가 있다.
객체지향이 객체간 메시지 전달을 통해 프로그래밍하는 방법입니다.
상속성(inheritance)은 이 객체를 만드는 클래스들을, PC의 폴더(트리)구조와 같은 부모/자식 계층으로 구성하여, 자식(하위)계층에서는 부모(상위)계층의 성질을 물려받을 수 있도록 하는 특성
다형성(Polymorphism)은 같은 메시지에 대해 클래스에 따라 다른 행위를 하게 하는 특성으로,
부모로부터 상속받은 메소드를 자식이 재정의 할 수 있다. (오버라이딩)
OOP 설계 5원칙(SOLID)
S(Single Resposibility Principle) 단일 책임 원칙
: 한 클래스는 하나의 책임만 가져야한다.
O(Open/closed Principle) 개방-패쇄 원칙
: "소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다."
L(Liskov Substitution Principle) 리스코프 치환 원칙
: "프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다." 계약에 의한 설계를 참고하라
I(Interface segregation Principle) 인터페이스 분리 원칙)
: "특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다."
D(Dependency Inversion Principle) 의존관계 역전 원칙
: 프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다." 의존성 주입은 이 원칙을 따르는 방법 중 하나다.
객체지향방법론 장점
- 사용자의 요구 사항 반영 및 모든 단계를 유기적으로 협력시킴
- 전체 프로세스 방향성 유지와 상속에 의한 재사용성 향상
- 현실 반영을 통한 분석 설계의 갭 최소화, 유지보수 용이함
출처 :
https://bmind305.tistory.com/32
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jvioonpe&logNo=220226743707
'컴퓨터개론' 카테고리의 다른 글
ERD (Entity Relationship Diagram) (0) | 2022.06.15 |
---|---|
UML 다이어그램 (0) | 2022.06.15 |
구조적 분석 방법론 (0) | 2022.06.15 |
소프트웨어 개발 방법론 (0) | 2022.06.15 |
[컴퓨터개론] 인터넷(Internet) (0) | 2022.06.14 |
댓글