본문 바로가기
Study/CS

[CS] 객체 지향

by _royJang 2022. 7. 2.
반응형

객체 지향

객체 지향의 발생

객체를 지향하는 대표적인 언어인 C++, JAVA, C# 등이 발생하기 전엔 C와 같은 절차지향적 언어가 주로 사용됐다. 이러한 언어는 제공하고자 하는 서비스의 목표를 이뤄가기 위해 구문이라는 연산을 흐름에 맞게 제작하여 이어 붙인 코드를 제작한다.

제공하고자 하는 서비스의 크기가 점점 커지고 복잡해 지면서 코드상에서도 확인할 수 있는 반복되는 구문을 쉽게 발견할 수 있었고 절차 지향 언어에서는 이러한 반복을 막고 관리하기 위해 우리가 아는 함수라는 개념을 만들어 사용하였다.

여기서 함수라는 연산을 진행하기 위해서는 연산의 주체인 CPU와 연산에 사용되는 자료구조를 관리하는 Memory의 관리가 필요한데 이를 한 묶음으로 엮어 모듈화 하여 한 파일로 만들어 관리하기 시작했다. 이를 우리가 말하는 객체라 볼 수 있다.

그러나 서비스가 점점 복잡해졌고 구문의 흐름을 통해 개발할 수 있는데 한계가 있었다. 그래서 당시의 개발자들은 함수간의 관계를 넘어 객체간의 관계에 집중하기 시작했고 이 관계에 집중한 언어를 제작했다. 이것이 객체 지향의 시작이라 할 수 있다.

객체 지향의 3요소

  1. 캡슐화(Encapsulation)
    1. 클래스의 속성은 숨기고, 수행할 기능은 공개
  2. 상속(Inheritance)
    1. 클래스 사이에 부모와 자식 클래스가 존재 가능
    2. 자식 클래스는 상속받은 부모 클래스의 속성 및 기능을 사용 가능
  3. 다형성(Polymorphism)
    1. 하나의 객체가 여러 가지 형태를 가질 수 있는 것.
    2. 오버라이딩 & 오버로딩

한마디로

절차 지향 언어에서 사용한 함수와 자료구조의 묶음인 객체를 인간이 유지보수가 편하도록 객체 끼리의 관계를 위주로 프로그래밍하는 패러다임.

반응형