서론
OOP와 AOP에 대한 차이를 찾아보던 중, PP도 존재함을 알게 되었고 각각의 특징과 차이가 무엇인지 알아보고자 한다.
그 중, 우선 OOP에 관해 알아보자.
OOP란?
OOP : Object Oriented Programming, 객체지향 프로그래밍
OOP를 풀어쓴 말 그대로 객체를 지향하는 프로그래밍 방식이다. 이를 이해하기 위해선 우선 객체라는 개념에 대해 이해할 필요가 있다.
객체
객체는 넓은 의미로는 실세계에 존재하거나 생각할 수 있는 것들을 의미한다.
이를 현재 사용하고 있는 Java에서 바라본다면 클래스의 인스턴스나 배열을 의미한다.
그리고 컴퓨터 공학에서의 객체는 변수, 자료 구조, 함수, 메서드, 식별자에 의해 참조된 메모리 상의 값 등을 의미한다.
그럼 객체지향 프로그래밍에서의 객체는 무엇일까?
변수, 함수, 자료 구조의 조합이 될 수도 있으며, 클래스의 인스턴스를 의미하기도 하고 속성과 기능을 가지는 프로그램 단위를 뜻하기도 한다.
그래서 OOP가 뭔데?
OOP, 객체지향은 이러한 객체를 통해 코드를 구성하는 방법론이라 정의할 수 있다. 모든 객체는 각 객체의 특성에 부합하는 상태와 동작을 가지며, 이를 통해 객체 간의 상호작용을 코드로 나타낼 수 있다. 객체지향은 이러한 객체의 상호작용을 코드로 나타낸다.
OOP의 특징
1. 캡슐화
- 데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법
- 데이터의 세부 내용이 객체 은닉된다. 즉, 데이터 변경으로 인한 에러가 줄어들고, 객체들간에 데이터를 자세히 알 필요가 없으므로 코드가 단순해진다.
- 객체와 함수의 재사용성이 향상된다.
2. 상속
- 자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것을 의미한다.
- 기능의 일부분을 변경하는 경우 자식 클래스에서 상속받아 수정 및 사용가능하다.
- 상속은 캡슐화를 유지, 클래스의 재사용이 용이하도록 해준다.
- 재정의 할 필요가 없어 코드 작성이 간결해진다.
- 상속으로 인한 최소한의 규칙을 통해 프로젝트의 확장 시 오류를 최소화한다.
3. 추상화
- 클래스들의 공통적인 특성(변수, 메소드)들을 묶어 표현하는 것
- 복잡한 모델을 중요한 것만 추려 추상화함으로써 시스템 구조를 시각적으료 표현할 수 있다.
- 완전한 시스템이 구축되지 않더라도 개략적으로 모델을 만들어 테스트하고 살을 붙여나갈 수 있다.
4. 다형성
- 특정 변수, 메소드가 상황에 따라 다른 결과를 나타내도록 하는 것
- 오버로딩, 오버라이딩이 존재한다.
객체지향의 특징뿐만 아니라 설계 5원칙도 존재한다. 이는 아래의 링크를 참조하면 된다.
객체지향 설계의 5가지 원칙 S.O.L.I.D
안녕하세요. 오늘은 객체지향의 5가지 원칙, SOLID에 대해서 알아보도록하겠습니다. java의 특징은 많이 들어보셨을 것 같습니다. 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism) 이렇게 있죠
sabarada.tistory.com