CS 지식, 개념정리

객체 지향 프로그래밍(Object Oriented Programming)이란? (객체지향 키워드, 특징, 면접 질문)

권락현 2022. 1. 26. 00:47

객체 지향 프로그래밍에 대해서 정리해보겠습니다.


 

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

  • 컴퓨터 프로그램을 단순히 명령어로 보는 것이 아닌 독립된 "객체"들의 모임으로 파악하는 개념
  • 각각의 객체는 메시지도 주고받고 협력할 수도 있다
  • 한마디로 데이터를 추상화해서 객체로 만들고 객체 간에 상호작용을 하도록 프로그래밍하는 방법이다.

 

 

객체 지향의 장단점은?

장점

  • 유연하고 변경에 용이하다(유지보수가 쉽다) - 전체 코드를 일일이 찾아서 수정하지 않고 객체 하나만 수정하면 됨
  • 대규모 소프트웨어 개발에 적합하다. - 업무 분담이 쉬움
  • 코드 재사용이 편리하다
  • 모델링이 쉽다 - 객체라는 개념이 현실 세계와 비슷하기 때문 

단점

  • 실행 속도가 상대적으로 느림
  • 난이도가 어려움
  • 설계와 구현에 더 많은 시간이 소요

 

 

객체 지향의 키워드 및 특징

  • 클래스 - 객체를 만들기 위한 정보를 정의한 것 (변수, 메서드 등을 정의해서)
  • 인스턴스 - 클래스가 정의한 것을 실제로 메모리에 할당하는 것
  • 추상화 - 객체들을 공통적인 특성을 파악하여 묶은 것을 정의하는 것, 클래스의 특성을 설계한다는 개념
  • 캡슐화 - 객체를 캡슐처럼 만든다는 의미, 외부에 정보 노출을 막고 권한이 있는 객체만 접근할 수 있도록 함 (코드 재활용, 정보은닉)
  • 상속 - 부모 클래스에게 속성과 기능들을 그대로 물려받는다는 의미, 물려받은 것 중 일부를 수정해서 사용도 가능
  • 다형성 - 상황에 따라 다른 의미로 해석될 수 있다는 것, 같은 객체가 다른 형태로 재구성될 수 있다.
  • 다형성>오버라이딩 - 부모 클래스의 메서드와 매개변수를 다시 정의하는 것
  • 다형성>오버로딩 - 같은 이름의 메서드를 여러 개 정의, 매개변수를 타입과 수를 변경하여 다르게 호출할 수 있도록 함

 


객체지향에서 가장 중요한 다형성에 대한 조금 더 자세한 내용

https://nack1400.tistory.com/42

 

객체 지향 프로그래밍의 다형성이란? (다형성의 본질, 역할과 구현, 구현 객체와 인터페이스)

다형성(Polymorphism) 객체 지향에서 가장 중요한 개념 예시 1) 무대에서 공연을 하는 배우와 감독 특징 1 - 배우는 대체가 가능해야 한다. => 이상이 생긴 곳만 고치면 된다. 유연하다. 특징 2 - 배우는

nack1400.tistory.com