본문 바로가기

개발지식

[프로그래밍 이론] 객체 지향 프로그래밍

객체는 물리적/개념적 존재 중에서 다른 것과 식별이 가능한 것을 말합니다.
물리적 객체는 자동차, 사람을 개념적 객체는 강의, 주문 등을 예로 들 수 있습니다.

객체는 속성(데이터)와 동작(메서드)를 요소로 가지고 있습니다.
그리고 이런 객체들을 조합해 프로그램을 만드는 것을 우리는 객체 지향 프로그래밍이라고 부릅니다.


추상화

추상화는 세부 사항을 제거하고 공통적인 부분만 추출하는 것을 의미합니다.
예를 들어, 동물이라는 객체를 만들 때 이동 방식처럼 중요한 속성과 메서드만 포함하는 것이죠.
추상화를 하면 코드가 간결해지고, 유지 보수 및 확장이 용이해진다는 장점이 있습니다.

 

상속

상속은 기존의 클래스를 확장해서 새로운 클래스를 만드는 개념입니다.
부모 클래스를 물려받은 자식 클래스는 부모의 속성과 메서드를 재사용할 수 있습니다.
예를 들어, 아까 만든 동물이라는 객체를 상속받은 독수리라는 객체는 이동 방식을 비행으로 재사용할 수 있습니다.
상속을 통해서 중복 코드를 줄이고, 프로그램의 구조가 명확해지는 장점이 생깁니다.

 

캡슐화

캡슐화는 데이터 보호와 데이터 은닉을 목적으로 만들어진 개념입니다.
데이터 보호는 외부에서 클래스에 정의된 속성과 메서드에 대해 접근하는 것을 막는 것이고,
데이터 은닉은 내부 동작을 감추고 필요한 부분만 노출하는 것을 의미합니다.

다형성

다형성은 하나의 객체 혹은 메서드가 여러가지 형태로 사용될 수 있는 성질을 의미합니다.
크게 두 가지로 분류할 수 있는데 메서드 오버라이딩 그리고 메서드 오버로딩입니다.

메서드 오버라이딩은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것입니다.
예를 들어, 동물을 상속받은 개와 고양이 객체는 우는 동작을 각각 멍멍, 야옹으로 재정의할 수 있습니다.

메소드 오버로딩은 하나의 클래스에서 같은 이름의 메서드를 여러개 정의하는 것입니다.
각 메서드는 매개변수의 개수나 타입으로 결정됩니다.
택시를 예시로 들면 같은 요금 계산 메서드라도 주간인지 야간인지에 따라서 같은 이름의 여러 메서드를 지을 수 있습니다.


글을 끝까지 읽어주셔서 감사합니다.
틀린 내용이 있다면 지적 부탁드립니다.