본문 바로가기
WebDev

OOP == Object Oriented Programming

by K-밍키 2022. 6. 7.

객체 지향 프로그램(Object Oriented Programming)에 대해 알아보자!


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

 : 모든 것이 객체(object)로 이루어져있다는 원리를 기반으로 필요한 데이터를 추상화(Abstraction)시켜 상태(attribute)와 행위(method)를 가진 객체(object)를 만들고 그 객체들이 서로 맞물려 기능(encapsulation)하도록 프로그래밍하는 것을 지칭합니다.

 

 1-1. 장점

상속을 통해 코드 재사용이 용이하다.
class를 상속, 확장, 모듈화를 통해 다른 사람의 코드를 쉽게 사용하거나 변경할 수 있고 업무 분담이 편리하다.
캡슐화를 통해 주변 영향이 적기 때문에 유지보수가 쉬워 경제적이다.
직관적인 코드 분석이 가능하다.

 1-2. 단점

정확한 이해가 필요해 설계단계부터 시간이 소모된다.

처리속도가 상대적으로 느리다.
객체가 많아지면 저장공간을 많이 차지하게 된다.

 

2. 구성요소

 2-1. Class : object를 생성할 때 사용하는 설계도라고 할 수 있다.

 2-2. Object : class로 생성한 instance로 각각의 고유 속성을 가진다.

 

3. 특징

 3-1. Abstraction(추상화)

추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말한다.
다시 말해 실제로 존재하는 객체들을 프로그램으로 만들기 위해 공통 특성을 파악해 필요없는 특성을 제거하는 과정을 가르킨다.
객체들은 실제 그 모습이지만, 클래스는 객체들이 어떤 특징들이 있어야 한다고 정의하는 추상화된 개념이다.
정리하면 추상화는 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법이라 할 수 있다.

 3-2. Polymorphism(다형성)

다형성이란 상속과 연관있는 개념으로 한 객체가 상속을 통해 기능을 확장하거나 변경하여 다른 여러형태(객체)로 재구성 되는 것을 말한다.
쉽게 말하면 한 부모의 밑에서 태어난 자식들이 조금씩 다르다는 것이다.
오버로드(Overload) 또는 오버라이드(Override)가 다형성의 대표적인 예라 할 수있고, 이것을 구현하는 걸 오버로딩(Overloading)과 오버라이딩(Overriding)이라고 한다.

간단하게 설명하자면,
오버라이딩은 하위 클래스(자식)가 상위 클래스(부모)에서 만들어진 메서드를 자신의 입맛대로 다시 재창조해서 사용하는 것을 말한다.
오버로딩은 하나의 클래스 안에서 같은 이름의 메서드를 사용하지만 각 메서드마다 다른 용도로 사용되며 그 결과물도 다르게 구현하는 것을 말한다.
오버로딩이 가능하려면 메서드끼리 이름은 같지만 매개변수의 개수나 데이터 타입이 달라야 한다.
다형성을 사용하면 같은 이름의 속성을 유지함으로서, 속성을 사용하기 위한 인터페이스를 유지하고, 메서드 이름을 낭비하지 않는다.
API가 많아질수록 복잡성은 증가하기 때문에 다형성은 유용하며 코드 재사용성을 늘려주어 유지보수가 용이하도록 도와주는 개념이다.

 3-3. Inheritance(상속)

상속이란 기존 상위클래스에 기능을 가져와 재사용할 수 있으면서도 동시에 새로운 하위 클래스에 새로운 기능도 추가할 수 있는 것이다.
즉, 부모가 자식에게 유전자를 물려주듯이 부모의 특징을 자식에게 모두 물려준다.
OOP에서 이를 부모 클래스, 자식 클래스라고 표현한다.
상속이 필요한 이유는 코드의 중복을 없애기 위해서다.
코드의 중복이 많아지면 개발 단계와 유지 보수에서 많은 비용이 들게 된다.
상속관계를 맺으면 자식 객체를 생성할 때 부모 클래스의 속성들을 자동으로 물려받기 때문에 자식 클래스에서 또 정의할 필요가 없다.

 3-4. Encapsulation(캡슐화)

캡슐화란 데이터와 코드의 형태를 외부로부터 알 수 없게하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법이다.
캡슐화의 중요한 목적은 변수를 private로 선언하여 데이터를 보호하고, 보호된 변수는 getter나 setter등의 메서드를 통해서만 간접적으로 접근을 허용하는 것 이다.
캡슐화를 하면 불필요한 정보를 감출 수 있기 때문에, 정보은닉을 할 수 있다는 특징이 있다.
캡슐화와 정보은닉은 동일한 개념은 아니다.

OOP is A.P.I.E

'WebDev' 카테고리의 다른 글

SMOPS 팀 프로젝트 - 1  (0) 2022.07.01
WIL - 2022/06/19  (0) 2022.06.19
WIL - 2022/06/12  (0) 2022.06.12
input type date의 value를 원하는 값으로 지정하기  (0) 2022.06.08
간단한 카카오 우편번호 서비스 따라하기  (0) 2022.06.04