본문 바로가기
IT/Teckweek

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

by YEON-DU 2020. 10. 5.
반응형

 

출처 : Procedural Vs. Object Oriented Programming

이미지에서 알 수 있듯이, 절차지향 언어는 출금, 입금, 송금이라는 '기능(function)'에 중점을 둔다면 객체지향 언어는 손님, 돈, 계좌라는 '객체(Object)'에 중점을 두고 있다.

 

객체지향 프로그래밍(Object-Oriented Programming)

객체지향 프로그래밍이란 컴퓨터 프로그래밍 패러다임 중 하나로 프로그래밍 로직을 객체로 만들어 나가는 것을 의미한다.

여기에서 객체란 하나의 역할을 수행하는 메소드와 변수의 묶음을 의미한다.

대표적 언어로는 C++, C#, Java 등이 있다.

 

절차지향 프로그래밍 (Procedural-Oriented Programming)

절차지향 프로그래밍이란 컴퓨터 프로그래밍 패러다임 중 하나로 순차적 처리를 중요시 여기는 프로그래밍 기법이다. 일반적으로 컴퓨터의 처리 구조와 유사하여 실행 속도가 빠르다는 장점이 있으나 유지보수가 어렵다는 단점이 있다.

대표적 언어로는 C언어가 있다.

 

기본 구성 요소

클래스Class - 같은 종류의 집단에 속하는 속성과 행위를 정의한 것

객체Object - 클래스의 인스턴스 (클래스에 실제로 메모리를 할당한 것)

메시지Message - 클래스로부터 생성된 객체를 사용하는 방법

 

객체 지향 프로그래밍의 특징 5가지

객체 지향의 특징은 캡슐화, 정보은닉, 추상화, 상속성, 다형성이 있다.

캡슐화와 정보은닉은 간단히 말해 자판기를 예로 들 수 있다. 우리가 음료수를 자판기에서 뽑는다고 해서 자판기 내부를 볼 수 없는 것이다. 또한 자판기라고 하는 하나의 캡슐로 묶는 것을 의미한다.

 

추상화의 경우엔 불필요한 정보는 숨기고 중요한 정보만을 표현하여 공통의 속성이나 기능을 묶어서 이름을 붙이는 것이다.

상속성은 이미 정의된 상위 클래스의 변수와 함수를 하위 클래스가 물려받는 것이다.

다형성은 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석될 수 있는 것이다.

즉 오버라이딩과 오버로딩이 가능하다는 이야기이다.

 

오버로딩과 오버라이딩

오버로딩 : 같은 이름의 메소드가 파라미터(인자)의 개수나 자료형에 따라서 다른 기능을 하는 것

오버라이딩 : 같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것

 

오버로딩의 예시로는 min이나 max 함수를 사용할 때가 대표적이다. min(a, b)에서 a와 b가 int일 때, double일 때, float일 때 각각 동일한 함수 이름으로 동작하는 것을 알 수 있다.

오버라이딩은 상위 클래스(부모 클래스)에서 상속 받은 함수를 하위 클래스(자식 클래스)에서 재정의하여 사용할 수 있는 것을 의미한다.

 

객체지향 프로그래밍의 장점과 단점

객체지향으로 코드를 작성하면 이미 작성된코드에 대한 재사용성이 높고, 유지보수가 쉽다.

단점으로는 처리 속도가 상대적으로 느리다. 객체가 많으면 용량이 커질 수 있으며, 설계 시 많은 시간과 노력이 필요하다.

반응형

'IT > Teckweek' 카테고리의 다른 글

얕은 복사와 깊은 복사  (0) 2020.10.19
최단 경로 문제  (0) 2020.10.12
안드로이드 액티비티 생명주기  (0) 2020.09.21
MVC, MVP, MVVM  (0) 2020.08.15
SSO란?  (0) 2020.08.02

댓글