매일 매일 성장하는 섭섭군

객체지향 프로그래밍이란?(Object Oriented Programming) 본문

개발관련/개발상식

객체지향 프로그래밍이란?(Object Oriented Programming)

섭섭군 2020. 8. 8. 22:38
반응형

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

객체지향프로그래밍 흔히들 OOP라고 많이들 부른다. 대학에서도 접하고 여러 프로그래밍 언어들에서 들었기 때문에 대충 이런거구나 라는 감은 잡히지만 여전히 한문장으로 설명하기에는 힘든 개념이다. 특히 객체라는 것을 설명하기가 어렵다.(공돌이라 그런것 같기도 하다.)

사전에 Object와 Oriented를 검색해보았다. 다음과 같이 나온다.

Object : 1. 물건, 물체 2. 욕망, 연구, 관심등의 대상 3. 목표, 목적
Oriented : ~위주의, 지향적인

단순히 해석하면 목적 위주의 프로그래밍 이라는 생각이 든다. 하나의 프로그램은 여러개의 함수와 변수들로 이루어진 집합이다.
프로그램이 커지고 복잡해 질수록 함수와 변수들은 더 많아지고 복잡해진다.
이렇게 복잡해진 프로그램을 수정하거나 유사한 기능을 하는 프로그램을 만들고자 할 때 굉장히 많은 문제가 발생할 것이다.
그래서 OOP는 목적, 기능들을 중심으로 묶어서 그룹(Group)화 시킨다. 이렇게 그룹화된 변수와 메소드들을 Object라고 한다.

기능으로 묶고 이를 잘 정리해 놓으면 우리는 이것을 재사용 할 수 있고, 기능을 추가할 수 있다.
또한 내가 작성한 코드가 아니여도 어떠한 것이 입력으로 들어가고 출력으로 나오는지만 알면 해당 기능을 사용할 수 있다.
이밖에도 많은 장점과 특징들 때문에 객체지향프로그래밍 언어들이 많이 사용되고 있는것 같다.

아래는 객체지향언어의 4가지 특징들이다.

1. 추상화 : 공통의 목적을 지는 변수나 메소드를 묶을 수 있다.
2. 캡슐화, 은닉화 : 프로그래밍의 내부 구현을 들어내지 않도록 감추는 것이다. -> 어떻게 만들어졌는지 몰라도 사용할 수 있도록(내부의 데이터를 보호하는 목적도 있다.)
3. 상속 : 기존의 기능을 재사용하여 기능을 추가할 수 있다. 
4. 다형성 : 여러가지 형태를 지닐 수 있다.
반응형
Comments