객체 지향 프로그래밍(OOP)?

객체 지향 프로그래밍(OOP)은 복잡한 현실 세계를 프로그래밍하기 위한 패러다임으로 현실 세계를 객체로 모델링하는 프로그래밍 기법이다. 즉 작은 단위의 객체들을 만들고 이들을 조합 및 상호작용하여 프로그래밍한다.

왜 객체 지향 프로그래밍이 등장했나?

기존의 프로그래밍 방식은 계산기 정도의 간단한 프로그램에는 문제가 없었지만, 소프트웨어 시장이 점점 더 규모가 커지게 되면서 기존의 프로그래밍 방식으로는 코드가 너무 방대해지고 풀 수 없는 스파게티 코드가 되는 현상이 종종 발생하였다. 따라서 작은 단위의 객체들을 만들어 이들을 조합 및 상호작용하여 큰 문제를 해결하는 상향식(bottom-up)방식의 프로그래밍 기법인 객체 지향 프로그래밍이 인기를 끌게 되었다.

클래스와 인스턴스

  • 클래스: 객체 지향 프로그래밍에서 객체를 만들기 위한 메타정보, 어떤 문제를 해결하기 위해 특정집단을 추상화 과정을 거쳐 추출한 공통된 상태와 행위를 변수와 메서드로 정의한 것

  • 인스턴스(객체): 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것

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

1. 추상화(Abstraction)

객체들의 공동적인 특징(행위, 상태)을 도출하는 행위

흔히 클래스를 정의하는 것을 추상화라 한다.


2. 캡슐화(Encapsulation)

기능과 특성의 모음을 클래스라는 캡슐에 분류해서 넣는 것

캡슐화의 특징은 크게 2가지로 나눌 수 있다.
1. 낮은 결합도: 즉 한곳에서 변화가 일어나도 다른 곳에 일어나는 영향을 최소화 시킨다. 흔히 정보은닉을 통해 실현한다.
2. 객체 재사용: 관련 기능과 특성을 한곳으로 모으기 때문에 객체 재사용이 용이하다.


3. 상속(Inheritance)

부모 클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게 하고 기능의 일부분을 변경해야할 경우 자식 클래스에서 해당 기능만 다시 수정하여 사용할 수 있게 하는 것

상속을 통해 불필요한 코드를 수정 및 제거할 수 있다.


4. 다형성(Polymorphism)

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

다형성은 오버로딩 오버라이딩을 통해 실현한다.
1. 오버라이딩: 부모 클래스의 매서드와 같은 이름, 매개변수를 정의하는 것, 부모의 클래스의 메소드를 자식 클래스가 오버라이딩하여 자신의 역할에 맞게 사용하는 것
2. 오버로딩: 같은 이름의 함수를 여러개 만들고 매겨변수의 타입과 개수를 다르게하여 매개변수에 따라서 다르게 호출할 수 있게 하는 것

참고자료

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

tech-interview-for-developer/Object-Oriented Programming

OOP(객체 지향 프로그래밍)

profile
시야를 넓히자

0개의 댓글