티스토리 뷰

카테고리 없음

객체 지향 프로그래밍

최초의 펭귄 2018. 5. 26. 13:10

안녕하세요. 오늘은 객체 지향 프로그래밍이 대한 제 이해를 정리하는 포스팅입니다.
많은 객체 지향 설명과 다양한 언어를 통해 객체 지향 프로그래밍을 하면서 느낀 제 생각을 적는 것이기에
오류가 있을 수 있으니 참고 해주세요!

객체 지향 프로그래밍

소프트웨어는 어떠한 문제를 해결하기 위해 제작합니다.(그렇기에 소프트웨어는 문제에서부터 시작됩니다.)
소프트웨어를 프로그래밍하면서 문제를 해결하기위해 다양한 함수와 변수, 상태가 존재하며
이를 체계적으로 관리하고 프로그래밍하기 위해 객체 지향 프로그래밍이 나왔다고 생각합니다.
객체 지향 프로그래밍은 여러 작은 객체들의 상호작용을 통해 어떠한 문제를 해결하는 프로그래밍입니다.
그렇기에 객체 지향 프로그래밍에서 가장 중요한 것을 객체라고 할 수 있습니다.

객체란?

객체는 어떠한 문제에서 하나의 책임있는 동작을 하는 주체라고 생각합니다.
예를 들어 계산기를 프로그래밍한다고 했을 때
수를 입력받는 객체, 수를 연산하는 객체, 수를 사용자에게 출력하는 객체 로 구성되며
각 객체들의 상호작용을 통해 하나의 계산기가 만들어지게 됩니다.
(이를 객체 지향 프로그래밍이라고 생각합니다.)

객체 지향 프로그래밍 - 5원칙

객체 지향 프로그래밍을 정리하면서 찾은 내용인데 좋은 내용이여서 정리합니다.

  1. SRP(단일 책임 원칙)
    객체는 오직 하나의 책임을 가져야 한다.
  2. OCP(개방 - 폐쇄 원칙)
    객체는 기능의 확장을 허용하며 스스로의 변경을 피해야 한다.
  3. LSP(리스코프 치환 원칙)
    자식 클래스는 언제나 부모 클래스를 대체할 수 있다.
  4. ISP(인터페이스 분리 원칙)
    객체에는 사용하지 않는 메서드가 존재해서는 안된다.(인터페이스를 더 작게 나누어야 한다.)
  5. DIP(의존성 역전 원칙)
    추상 클래스는 오직 추상 클래스만을 참조하여야 한다.

원칙을 정리하면서 언어에 이러한 요소들이 잘 녹아 있는 것을 느낍니다.
SRP나 ISP를 잘 기억하면서 개발하면 더욱 좋은 객체 지향 프로그래밍이라고 생각합니다.

객체 지향 프로그래밍 - 3요소

객체 지향 언어를 배우면 무조건 나오는 3요소입니다.

  1. 캡슐화
    객체안의 속성을 숨기며 객체가 수행하여야 하는 기능만 공개한다.
  2. 상속
    자식 클래스는 상속받는 부모 클래스의 속성과 기능을 물려받는다.
    (상속을 받은 자식은 부모의 모든 것을 대체할 수 있어야 한다.)
  3. 다형성
    overriding : 부모 클래스에 정의된 모든 내용은 자식은 재정의 할 수 있다.
    overloading : 같은 이름의 메소드를 여러개 정의할 수 있다.

마치며

객체 지향 프로그래밍은 객체들의 상호작용입니다.
상호작용을 더욱 잘 표현하기 위해 3요소와 5원칙이 있으며
이를 통해 객체를 더욱 잘 추상화 할 수 있으며
추후 프로젝트를 수정 할 때에도 더욱 유용하게 수정 할 수 있다고 생각합니다.

위에서 말했듯이 제 생각을 기반으로 작성한 내용이기에
다른 블로그의 포스트와 다를 수 있으며 오류가 있을 수 있습니다.
이 점 유의하여주시고 오류나 질문은 하단의 댓글로 남겨주세요.

감사합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday