Develop/CS

객체지향 프로그래밍(OOP)

eroul-ri 2022. 11. 22. 00:09

객체지향 프로그래밍(Object-Oriented-Programing)

 

 

실제 데이터의 표현을 객체를 중심으로 누가 어떤 일을 하는가에 집중해서 개발하는 방법론

 

객체지향 프로그래밍은 데이터를 표현하는데에 있어 객체를 중심으로 누가 어떤 일을 하는가에 집중하여 개발하는 방법론을 말한다. 

데이터를 추상화 시켜 상태와 행위를 만들고 그 객체들이 서로 상호작용하는 형태로 개발한다.

 

 

객체지향 프로그래밍의 장/단점

장점
- 코드의 재사용성이 높다.
- 유지보수가 쉽고 편리하다.

단점
- 설계에 많은 시간이 소요된다.
- 절차형 프로그래밍에 비하여 상대적으로 느리다.

 

상태와 행위를 클래스로 만들고 그 객체를 상속을 통해 확장할 수 있고 객체 단위로 관리하기 때문에 객체들 간의 독립성이 뚜렷해지고 중복된 코드의 양이 줄어들고 코드의 재사용성이 높아진다는 장점이 있다.

 

하지만 객체에 대한 이해를 바탕으로 설계해야하기 때문에 그만큼 설계를 하는데 많은 시간이 소요될 수 있고, 절차형 프로그래밍에 비하여 개발 속도나 처리 속도가 상대적으로 느리며, 그만큼 개발자의 프로그래밍 난이도가 높아지는 단점이 있다.

 

 

객체지향 프로그래밍의 특징

1. 추상화

- 객체들의 공통적인 속성과 기능을 정의하는 과정

 

2. 캡슐화

- 클래스에 인스턴스와 함수를 정의하고 외부에서 내부의 구현부를 알 수 없도록 은닉하는 방법, 정보를 은닉하여 높은 응집도와 낮은 결합도를 유지할 수 있도록 설계

 

3. 다형성

- 변수나 함수가 상황에 따라서 다른의미로 해석할 수 있다는 것

- 오버라이딩(Overriding) : 부모 클래스의 메서드의 동작을 재정의하는 것.

- 오버로딩(Overloading) : 같은 이름의 함수를 여러개를 만들고 매개변수의 타입, 개수와 같은 것을 다르게 하여 호출 가능하도록 하는 것.

 

4. 상속

- 상위 클래스를 부모, 하위 클래스를 자식과 같은 개념으로 보고 하위 클래스가 부모의 특징을 물려 받는 것.

- 기능의 일부분에 변경이 필요한 경우 상속받은 하위 클래스에서 해당 기능만 재정의하여 사용할 수 있음.