1. 절차지향(PP)
- 기능중심으로 바라보는 방식
- 어떤기능을 어떤 순서로 처리하는가에 초점을 맞춤
- 단점 - 유지보수의 어려음
- 엄격한 실행순서로 인한 비효율적
→ 절차지향언어의 단점을 보안하기 위해 객체지향의 개념이 등장함
2.객체지향(OOP)
2-1. 객체지향 정의
- Object Oriented Programming
- 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식
- 객체 : 프로그램상에서 구현할 대상
- 클래스 : 객체의 '속성'과 '기능'을 정의한 설계도와 같은 것
- 인스턴스 : 클래스의 내용대로 메모리상에 구현될 실재(일반적인 의미의 객체)
2-2. 객체지향 특성
- 캡슐화
- 상속
- 추상화
- 다형성
→ 이 특징들은 모두 유기적으로 연결된 개념
2-2-1. 캡슐화
- 객체의 내부 구조 및 정보를 캡슐처럼 하나로 감싸 외부에서 볼 수 없게 은닉하여 보호하는 것
- 완성도 : 높은 응집도(하나의 책임을 위한 메서드들이 너무 분산되지 않고 한 객체에 모여있는 정도)
- 정보은닉 : 객체 안에서 밖으로 또는 밖에서 안으로 정보에 접근 할 수 없음
→ 객체는 스스로 동작 할 수 있는 환경을 가지고(높은 응집도), 외부 의존을 최소화(낮은 결합도)하고 외부 침략을 제한 해야함
2-2-2. 상속
- 자식클래스(서브클래스)가 부모클래스(슈퍼클래스)의 속성을 물려받는 것
- 상속의 목적 : 추상과 구체화의 관계를 위한 것(공유x)
2-2-3. 추상화
- 추상체 : 추상회된 객체(상위 객체)
- 구상체 : 구체화된 객체(하위 객체)
- 추상화는 상대적인 것 → 상위객체는 반드시 하위객체보다 추상적이여야함
2-2-4. 다형성
- 하나의 객체나 메서드가 여러가지 다른 형태를 가질 수 있는 것
- Overriding(오버라이딩) : 부모클래스로부터 상속받은 메서드를 자식클래스에서 재정의하여 사용하는 것
- Overloading(오버로딩) : 메서드의 이름은 동일, 매개변수의 타입이나, 갯수를 달리하여 중복 정의함
→ 매개변수에 따라 특정 메서드가 호출 되는 것
2-3. 객체지향의 5가지 설계원칙( SOLID원칙)
- Simple Responsibility Principle(SRP) : 하나의 클래스는 하나의 책임만 가져야한다
- Open/ Closed Principle(OCP) : 클래스는 확장에 대해 열려 있어야 하고 변경에 대해서는 닫혀 있어야 한다
- Liskov Substitution Principle(LSP) : 파생 클래스의 메소드는 기반 클래스의 메서드를 대체하여 사용 될 수 있어야 한다
- Interface Segregation Principle(ISP) : 클라이언트가 사용하지 않는 메소드에 의존하지 않아야 한다
- Dependency Inversion Principle(DIP) : 추상화된것은 구체적인 것에 의존하면 안된다
(자주 변경되는 구체적인 것에 의존하지 말고 추상화된것을 참조)
→ SOLID원칙
3. 차이점
객체지향(OOP) | 절차지향(PP) | |
장점 | 코드의 재활용성이 높음 디버깅이 쉬움 생산성 향상 유지보수 우수성 |
컴퓨터의 처리구조와 유사 → 실행속도가 빠름 |
단점 | 처리속도가 느림 설계에 많은 시간이 소요됨 개발속도가 느림 |
유지보수가 어려움 실행 순서가 정해져 있어 비효율적 과도한 전역변수의 사용 디버깅이 어려움 |
구현방법 | 기능 중심으로 메서드 구현 | 데이터 중심으로 함수구현 |
언어 | JAVA, Object-C, Swift,C++,Python | FORTRAN, COBOL,PASCAL, C, BASIC |
참고)
OOP의 특징과 OOP 잘 설계하기
객체지향 프로그래밍의 특징
velog.io
https://mangkyu.tistory.com/88
[기술면접] CS 기술면접 질문 - 프로그래밍 공통 (1/8)
1. 프로그래밍 공통 [ OOP란 ] OOP는 현실 세계를 프로그래밍으로 옮겨와 현실 세계의 사물들을 객체로 보고, 그 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍하는 기법입니다. OOP
mangkyu.tistory.com
https://kadosholy.tistory.com/88
[Java] 객체지향언어란? 특징(캡슐화, 상속, 다형성)과 클래스, 객체, 인스턴스
객체지향언어의 특징(캡슐화, 상속, 다형성)과 클래스, 객체, 인스턴스 1. 객체지향언어란? 객체지향언어는 현실세상에서 우리가 관찰할 수 있는 모든 객체(ex, 자동차, 바퀴, 의자, 사람 등)는 자
kadosholy.tistory.com
https://lxxyeon.tistory.com/86
객체지향(OOP) VS 절차지향(PP) 프로그래밍
객체지향, 절차지향 프로그래밍의 정의, 특징, 장단점, 종류에 대해 알아보고 비교해보자 그전에, 🔥 간단 이해 🔥 ✔️ 절차식 방법은 프로그램을 위 그림같이 데이터와 기능(함수)으로 나누
lxxyeon.tistory.com
'CS지식 > 개발 상식' 카테고리의 다른 글
[CS 지식 - 개발상식] TDD의미 및 장점 (0) | 2023.01.11 |
---|---|
[CS 지식 - 개발상식] 함수형 프로그래밍 (0) | 2023.01.11 |
[CS 지식 - 개발 상식] MSA(Micro Service Architecture) (0) | 2023.01.11 |
[CS지식 - 개발 상식] 클린코드 (0) | 2023.01.10 |
[CS지식 - 개발 상식] MVC 패턴 (0) | 2023.01.10 |