객체지향 프로그래밍이 뭔가요?

KIM YONG GU·2023년 9월 2일

얄팍한코딩사전

목록 보기
7/23
post-thumbnail

객체란 무엇인가?

데이터와 기능이 클래스로 '캡슐화'된 컴퓨터 자원의 묶음을 객체라고 한다.

객체 지향 프로그래밍의 개념

  • 객체 지향 프로그래밍은 프로그래머들이 프로그래밍을 더 쉽게, 더 잘하기 위해 만들어짐
  • 객체 지향 프로그래밍은 어떤 프로그래밍 방식, 방법론임
  • 객체 지향 프로그래밍은 여러 관점에서 다르게 표현될 수 있는 코끼리 같은 거라 다 맞는 말이지만 배우는 사람 입장에서는 다 듣고도 좀처럼 이해되지 않는 개념임

객체 지향 프로그래밍의 특성

  • 객체 지향 프로그래밍을 배운 뒤로는 클래스라는 모양 틀을 만들고 이 흙을 그 틀에 넣고 구우면 모양과 용도가 뚜렷한 벽돌들이 만들어지는 거임
  • 객체 지향 프로그래밍의 특성 중 하나인 은닉성은 외부에서 조작할 수 있는 명령어만 퍼블릭으로 공개해 놓는 것임 (private vs public)
  • 객체 지향 언어들에서 사용되는 인터페이스를 써보면 청소 담당 인터페이스를 만들고 여기에 청소와 교실 이동이라는 메소드를 넣어놓음

객체 지향의 강력함

  • 청소 메소드 호출 한 번으로 지시가 내려질 수 있는 것은 청소 담당이랑 인터페이스를 적용한 클래스이기 때문임
  • 클래스들을 가지고 또 다른 클래스들을 조립해낼 수 있음
  • 객체 지향의 강력함은 클래스들을 가지고 또 다른 클래스들을 조립해낼 수 있는 것임

부모 클래스와 자식 클래스

  • 추상적인 부모 클래스를 자식 클래스에서 구체적으로 정의한다. 중복되는 것은 부모 클래스에서 상속받은 것으로 대체하고, 추가된 것만 코드를 작성한다.
  • 부모 클래스에서 정의된 메소드의 작업이 자식 클래스에서 다른 걸로 오버라이드(override) 될 수 있는 걸 객체 지향의 다형성이라고 함
  • 상속은 트리구조의 상하관계가 뚜렷하기 때문에 한 자식이 두 부모로부터 상속받는 게 언어마다 불가능하거나, 부작용이 있다. 반면에 인터페이스는 상속으로부터 자유로움
  • 특별한 기능을 인터페이스로 장착할 수 있음.

상속은 물려받는 것, 인터페이스는 장착하는 것이라고 보면 이해가 쉽다.

객체지향 언어의 특징

  • 객체 지향은 프로그래밍 방법론이기 대문에 객체지향 언어라 불리는 언어(JAVA 등)들에서만 객체지향 프로그래밍이 가능한 건 아님
  • 이를 구현하기 쉽게 만들어진 것뿐이며 유용하지만 만능은 아님
profile
Engineer, Look Beyond the Code.

0개의 댓글