객체 지향 프로그래밍(OOP, Object-Oriented Programming)
객체 지향 프로그래밍이란 컴퓨터 프로그램을 여러 독립적인 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임.
객체 지향 프로그래밍의 장점
- 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있음.
- 코드의 변경을 최소화하고 유지보수를 하는 데 유리함.
- 코드의 재사용을 통해 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현할 수 있음.
- 인간 친화적이고 직관적인 코드를 작성하기에 용이.
객체 지향 프로그래밍의 4가지 특징
추상화, 캡슐화, 상속, 다형성
객체
객체는 객체 지향 프로그래밍의 가장 기본적인 단위이자 시작점이다.
객체 지향 개념의 가장 기본적인 전제는 실제 세계는 객체들로 구성되어 있으며, 보여지는 모든 현상과 발생하는 모든 사건은 이러한 객체들 간의 상호작용을 통해 발생한다는 것에서 출발한다.
클래스와 객체의 관계
옛날에는 객체는 붕어빵, 클래스는 붕어빵틀에 비유했던게 인상깊어서 그렇게 이해하고 있었는데, 지금 찾다가 보니까 그게 아니라는 것을 이 글을 읽고 알았다.
그러니까 객체와 클래스에 대해 쉽게 말하자면
객체는 유일무이한 것이고 클래스는 "객체의 분류"다.
붕어빵틀이 아닌 분류 기준인 것이다. '사람' 클래스가 있고, 이 클래스로 생성한 '백종원', '유재석' 등의 객체가 있다고 할 때, '사람'은 틀이 아니다. 그러니까 클래스는 객체를 찍어내기 위한 틀이 아니라 분류의 개념으로 생각해야 한다.
객체 지향 프로그래밍의 4가지 특징
1. 추상화 (Abstraction)
객체의 공통적인 속성과 기능을 추출하여 정의하는 것.
장점
- 역할과 구현을 분리하여 보다 유연하고 변경이 용이한 프로그램을 설계할 수 있다.
- 공통된 부분을 다시 정의할 필요가 없기에 코드의 중복이 줄어든다.
2. 캡슐화 (Encapsulation)
클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것.
캡슐화를 하는 이유
- 데이터 보호 - 외부로부터 클래스에 정의된 속성과 기능들을 보호
- 데이터 은닉 - 내부의 동작을 감추고 외부에는 필요한 부분만 노출
장점
- 변경 가능성이 높은 부분은 숨기고, 변경 없이 안정적인 부분만 외부에 공개함으로써 변경의 여파를 통제할 수 있음.
- 객체 간의 결합도를 낮춰서
3. 상속 (Inhertance)
여러 개체들이 지닌 공통적인 특성을 부각시켜 하나의 개념이나 법칙으로 성립하는 과정.
장점
- 하위클래스는 상위 클래스의 변수와 기능을 상속받아서 재사용할 수 있기 때문에 코드의 중복을 제거할 수 있음.
4. 다형성 (Polymorphism)
어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질.
예시
- 메서드 오버라이딩(Method Overriding)
부모 클래스의 메서드를 자식 클래스에서 재정의해서 사용하는 것. 자식 클래스는 부모 클래스의 메서드를 재활용하면서, 독자적인 기능을 추가하여 사용할 수 있음. - 메서드 오버로딩(Method OverLoading)
같은 이름의 메서드를 다양한 매개변수 타입과 개수로 오버로딩하여 사용하는 것. 메서드 이름을 동일하게 유지하면서도 다양한 상황에서 유연하게 대응할 수 있는 방법을 제공.
장점
- 코드의 재사용성과 유연성을 높임.
- 불필요한 코드의 중복과 결합도를 낮추어 유지보수성을 높일 수 있음.
[참고]
'공부 > CS' 카테고리의 다른 글
메타버스/아크버스란? (0) | 2023.12.02 |
---|