객체지향 프로그래밍
포스트
취소

객체지향 프로그래밍

제가 처음 배운 언어는 C 언어입니다. 처음 배운 프로그래밍 언어이기에 너무 재밌었던 기억이 있는데요ㅎㅎ

당시 절차지향 프로그래밍인 것은 알았지만 딱히 신경쓰지 않고 공부했던 것 같습니다.

그런데 코드가 점점 길어질 수록 가독성은 떨어졌고(실력도 문제지만,,) 나중에 이 코드를 내가 읽을 수 있을까? 싶었어요ㅋㅋ,,

그러던 어느날 2학년이 되던 때 Java라는 언어를 배우며 객체지향 프로그래밍을 알게 되고 안드로이드 수업이였기 때문에 C언어 보다 더 재밌었는데요ㅎㅎ

아무래도 C언어보다 성능은 떨어지더라도 가독성이 좋아서 그런지 개발하는게 재밌었습니다.

그런 의미에서! 객체지향 프로그래밍 간단하게 알아보겠습니다.


객체지향이란?

객체지향 프로그래밍은 순차적으로 실행에 초점을 잡은 절차지향과는 다르게 객체간의 관계/조직에 초점을 두고 있습니다. ( 프로그래밍을 설계하는 것! )

마치 우리 현실 세계를 생각하면 쉬운데요! 컴퓨터 부품을 하나하나 조립해서 맞춘다는 생각하시면 됩니다.

객체지향의 특성 4가지

  • 캡슐화

    • Class 안에서만 사용하고 싶은 데이터를 숨기고 Class 밖에서는 수정을 못하게 막는 방법입니다.

    • 수정은 class 안에서만 하고 프로퍼티로 읽기 상태만 public을 만들거나, 따로 함수를 생성해서 public Get()으로 바깥 Class가 읽을 수 있도록 합니다.

  • 상속

    • 미리 구현된 Class를 상속받아 기능들을 이어 받을 수 있습니다.

    • 이 덕분에 재활용하기 편하고 가독성을 올리기 좋은 방법입니다.

  • 다형성

    • 하나의 함수 이름으로 다양한 상황에 변수를 받을 수 있는 똑같은 이름의 함수를 구현할 수 있습니다.
  • 추상화

    • 불필요한 정보 외 중요한 정보만 표현함으로써 공통의 속성과 기능을 묶어 이름을 붙이는 것입니다.

5가지 설계 원칙 (SOLID)

  • SRP: 단일 책임 원칙

    • 클래스는 단 하나의 목적을 가져야하며, 클래스를 변경하는 이유도 단 하나의 이유여야한다.
  • OCP: 개발-폐쇠 원칙

    • 확장에는 열려있고, 변경에는 닫혀 있어야 한다.

    • 즉, 클래스를 수정해야 한다면 그 클래스를 상속(확장)하여 수정한다.

  • LSP: 리스 코프 치환 원칙

    • 상위 타입 객체를 하위 타입으로 바꾸어도 동일하게 동작해야한다.

    • 즉, 자식 클래스를 사용하는 중 부모 클래스로 치환하여도 문제가 없어야 한다.

  • ISP: 인터페이스 분리 원칙

    • 객체는 이용하지 않는 메소드에 의존하지 않도록, 인터페이스를 분리 해야 한다.
  • DIP: 의존 역전 원칙

    • 상위 클래스가 하위 클래스에 의존하면 안 된다.

    • 추상화에 의존해야지, 구체화에 의존하면 안 된다.


객체지향은 즉흥으로 코딩하는 것보다 구현할 기능을 미리 설계하고 접근해야 막히지 않고 술술 풀리는 경우가 많습니다.

물론 설계도 잘해야 되지만 변수, 함수, 인터페이스 등 미리 구조를 생각하고 접근하면 더욱 가독성이 좋은 코딩이 될 수 있을 것이라 생각합니다.

저는 개인적으로 성능보단 가독성을 중요시 생각하는데요!

협업에서도 중요하지만 내 미래의 자신이 읽어도 이해가 될 정도로 잘 짜야지 그것이 좋은 코딩인 것 같습니다 :D


💡 참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

(Unity) 가비지 컬렉션 (GC)

(Unity) Draw Call 최적화