개발하는 리프터 꽃게맨입니다.

???: 객체 지향 프로그래밍이 뭐야? 본문

기타 개발 지식

???: 객체 지향 프로그래밍이 뭐야?

파워꽃게맨 2024. 1. 27. 13:31

이때까지 객체 지향 프로그래밍만 해왔지만 정확히 

객체 지향 프로그래밍은 ~야 라고 말하기는 힘든 것 같다.

 

그래서 이번 포스팅으로 간결하게 정리하고자 한다.

 

1. 객체 지향 프로그래밍이란?

단순히 데이터와 로직에 의해 프로그램이 진행되는 것이 아니라, 

상태와 기능을 가지는 '객체' 라는 단위로 추상화하여 객체들 끼리의 상호작용으로 프로그램을 설계하는 방식을 뜻합니다.

 

 

2. 객체란 무엇인가?

서로 연관된 변수와 메소드를 묶어서 관리할 수 있는 것을 객체라고 정의할 수 있습니다.

 

 

3. 객체 지향의 특징은 무엇인가?

객체 지향의 특징은 크게 추상화, 캡슐화, 상속성, 다형성의 특징을 가집니다.

 

1) 추상화

불필요한 정보는 숨기고 중요한 정보만들 표현함으로써 핵심적인 개념과 기능을 간추려 내는 것을 뜻합니다.

추상화를 통해 객체를 단순화하고 복잡성을 낮출 수 있습니다.

 

2) 캡슐화 (은닉성)

객체가 내부적으로 구현되는 세부적인 사항을 외부에 노출하지 않는 것을 의미합니다.

객체의 내부 구현을 보호하고, 객체 간의 의존성을 낮출 수 있습니다.

 

3) 상속성

기존의 클래스를 기반으로 새로운 하위 클래스를 만드는 것을 뜻합니다.

하위 클래스는 상위 클래스의 상태와 기능을 물려받을 수 있으며, 기존 클래스의 기능을 확장하거나 변경할 수 있습니다.

 

4) 다형성

같은 이름의 메소드나 연산자가 다른 객체에 의해 다르게 구현될 수 있는 것을 뜻합니다.

오버로딩의 경우 같은 이름의 메소드가 다른 매개변수 타입을 정의하여 다르게 구현할 수 있는 것을 뜻하며,

오버라이딩의 경우 부모클래스에서 상속받은 같은 이름, 같은 매개변수 타입을 가지는 메소드가 다른 기능을 새롭게 정의하는 것을 뜻합니다.

 

 

4. 객체 지향 프로그래밍의 장점

객체 단위로 모듈화시켜서 개발하기 때문에 유지보수가 편리하고 코드의 재사용이 용이하다.

그러나 처리속도가 상대적으로 느리고, 객체 수가 많아질수록 용량이 커질 수 있다.