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

한상욱·2024년 7월 22일
0

CS&자격증후기&잡담

목록 보기
10/21
post-thumbnail

들어가며

객체 지향 프로그래밍(Object Oriented Programming)는 프로그래밍에서 필요한 데이터를 추상화하여 상태와 행위를 가진 객체로 생성한 후 각 객체의 상호작용으로 코드를 작성하는 기법을 의미합니다. OOP를 수행하면서 필요한 개념적인 것을 정리해보겠습니다.

OOP

OOP에서는 클래스, 객체, 인스턴스라는 개념이 등장합니다.

  • 클래스
    어떠한 것이든 생성하기 위해서는 설계도가 필요하겠죠? 프로그래밍에서 객체를 생성하기 위해서는 클래스라는 설계도가 필요합니다. 클래스로 해당 객체의 속성 및 메소드를 정의하여 개발자가 해당 클래스를 이용할 수 있습니다. 여기서 객체의 속성은 프로퍼티, 행위 함수는 메소드라고 하게 됩니다.
  • 객체
    객체(Object)는 프로그래밍에서 연관된 변수와 메소드가 묶인 집합체라고 할 수 있습니다. 예를들어, 사람은 이름, 나이, 직업 등의 변수 정보를 가질 수 있고 행위로는 숨쉬기, 인사하기 등등이 메소드로 존재하겠네요? 이것을 프로그래밍으로 사람 객체로 나타낼 수 있습니다.
  • 인스턴스
    인스턴스는 클래스를 통해 생성한 실질적인 변수들입니다. 위에서 사람 객체를 클래스로 나타내어 코드로 작성했다면 실제로 해당 클래스를 이용하기 위해서 클래스를 생성하게 되는데 이렇게 생성된 변수들은 모두 인스턴스라고 하게 됩니다.

한마디로 객체를 클래스로 만들어두면 인스턴스로 생성해서 사용한다는 의미겠네요!

추상화와 구체화

클래스를 생성하다보면 비슷한 성격의 클래스는 공통적인 부분을 갖게 됩니다. 이러한 경우에는 공통적인 클래스로 관리하고 상속의 개념을 이용하면 불필요한 코드가 줄어들 수 있을 것입니다. 여기서 두가지 개념인 추상화와 구체화가 등장합니다.

  • 추상화
    객체들에게서 공통적인 속성과 행위를 추출하는 것
    이를 통해 간단하게 프로그램을 작성하는 것
  • 구체화
    추상화된 객체들을 본래의 객체에 맞게 구체적인 로직을 작성하는 것

예를 들어, 사람은 하나의 동물이죠. 동물에게는 이름과 나이가 존재합니다. 그리고 숨도 쉬고 밥도 먹죠. 근데, 사람은 이름과 나이 뿐만 아니라 직업도 존재할 수 있고, 말도 하기 때문에 여러가지 행위를 할 수 있죠. 추상적인 동물에서 사람은 구체화되었다고 할 수 있습니다.

OOP의 특징

OOP에서는 다음과 같은 특징을 갖고 있습니다.

  • 캡슐화
    데이터 구조와 데이터를 다루는 방법을 하나로 묶는 것.
    즉, 변수와 함수를 하나로 묶는 것입니다. 이를 통해 낮은 결합도를 유지하게 됩니다.
  • 상속
    클래스의 속성과 행위를 하위 클래스에게 물려주거나 하위 클래스가 물려받는 것.
    객체 지향 언어에서는 상속의 개념을 통해 공통적인 클래스로 묶어 구체화하는 클래스에게 물려주게 됩니다! 이를 통해 코드가 간단해지게 되겠네요
  • 다형성
    상황에 따라 변수와 함수명이 다양하게 해석되는 것. 오버로딩에 대해서 알고 계신가요? 오버로딩은 일종의 다형성입니다. 함수의 이름이 같아도 넘겨지는 파라미터에 따라서 다른 기능이 동작할 수 있는 것이죠.
profile
자기주도적, 지속 성장하는 모바일앱 개발자가 되기 위해

0개의 댓글