CS
[CS] 객체지향 프로그래밍 (OOP)
2juhyunju
2023. 12. 8. 13:45
객체지향 프로그래밍(OOP)란?
- 컴퓨터 프로그래밍의 패러다임 중 하나이다.
- 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다.
- 객체지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임이라고 할 수 있다.
객체지향 프로그래밍 특징
1. 추상화(Abstraction)
- 추상화는 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현한다.
- 사물들의 공통적인 특징, 즉 추상된 특징을 파악해 인식의 대상으로 삼는 행위를 말한다.
- 추상화는 구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 수단이다.
2. 캡슐화(Encapsulation)
캡슐화란 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미한다.
- 응집도: 클래스나 모듈 안의 요소가 얼마나 밀접하게 관련있는지를 나타낸다.
- 결합도: 어떤 기능을 실행하는데 다른 클래스나 모듈에 얼마나 의존하는지 나타낸다.
정보은닉
캡슐화는 정보은닉을 통해 높은 응집도와 낮은 결합력을 갖게 한다.
- 필요가 없는 정보는 외부에서 접근하지 못하도록 제한하는 것이다.
- private 키워드를 통해 데이터를 보호해 접근을 제한한다.
3. 상속성(Inheritance)
상속이란 기존 상위 클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념이다.
- 기존 클랴시의 기능을 가져와 재사용할 수 있으면서도 새로운 기능을 추가할 수 있게 해준다.
- 여러 개체가 가진 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립시키는 과정이다.
- 따라서 같은 특징있는 클래스를 그대로 물려받아, 다시 작성할 필요없이 재사용으로 효율성을 늘린다.
- 이를 통해 다형성을 확보할 수 있다.
4. 다형성(Polymorphism)
다형성은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다. 즉, 다형성은 형태가 같은데 다른 기능을 하고 서로 다른 클래스의 객체가 같은 메세지를 받았을 때 각자의 방식으로 동작하는 능력이다.
- 다형성은 상속과 연계되어 동작하면 매우 강력한 힘을 발휘한다.
- 다형성과 일반화 관계는 코드를 간결하게 하여 재사용과 유지보수가 용이하도록 도와주고 변화에도 유연하게 대처할 수 있게 해준다.
오버라이딩(Overriding)
- 부모 클래스에서 상속바든 자식 클래스에서 부모 클래스에서 만들어진 매서드를 자신의 입맛대로 다시 재정의해서 사용한다.
오버로딩(Overloading)
- 같은 이름의 메서드를 사용하지만 메서드마다 다른 용도로 사용되며 그 결과물도 다르게 구현할 수 있게 만드는 개념이다.
- 오버로딩이 가능하려면 메서드끼리 이름은 같지만 매개변수나 갯수나 데이터 타입이 다르면 오버로딩이 적용된다.