본문 바로가기
CS

객체지향 정리

by sungin95 2023. 7. 16.

강의를 듣다가 객체 지향 개념에 대해서 이야기가 나왔는데. 그냥 개념을 알려주는 것이 아니라 강사님의 생각을 알려 주셨는데. 너무 내용이 좋은거 같아서 정리를 해 보았습니다. 

 

우선 개념에 대해서 정리를 하고 가겠습니다. 

 

객체 지향의 4가지 특징

객체란 사람이 인식 할 수 있는 사물이나 개념을 의미합니다. 

이러한 객체를 중심으로 개발을 하는 패러다임을 객체 지향 프로그래밍이라고 하고 4가지의 특성이 있습니다. 

캡슐화

마치 알약의 내부를 외부에서는 볼 수 없듯이 객체 내부의 코드를 외부에서 볼 수 없도록 하여 정보 은닉화를 도와주고 코드의 모듈화를 도와주는 특성입니다. 

상속

클래스 간에 계층 구도를 형성하여 부모와 자식 클래스를 만들어 부모클래스의 메서드와 속성을 자식 클래스에게 넘겨주는 특성을 말합니다. 이를통해 코드의 재활용성을 높일 수 있습니다. 

추상화

복잡한 현실세계의 객체를 단순화 하여 모델링화 하는 과정입니다. 이를 통해 필요한 정보를 가지고 코드를 작성할 수 있습니다. 

다형성

같은 이름의 메서드를 호출하더라도 누가 호출 했는지에 따라 다른 메서드가 나오는 기능으로, 이를 통해 서로 다른 타입이더라도 같은 이름의 메서드를 호출 해서 사용 할 수 있습니다. 이를 통해 코드를 가독성을 높여 줍니다. 

 

SOLID원칙

좋은 소프트웨어를 설계하기 위한 5가지 원칙을 말합니다. 

 

단일 책임의 원칙

하나의 클래스는 하나의 책임을 져야 한다. 코드를 변경 할 떄 한가지 이유에 의해서 변경을 하도록 설계를 해야 합니다. 

 

개방-폐쇄의 원칙

기능 확장에는 열려 있고 변경에는 닫혀 있어야 합니다. 그러니까 기능을 추가 할때 기존의 코드를 건들이지 않고 수정이 가능해야 합니다. 

 

리스코드 치환 원칙

상위 타입의 객체는 하위 타입의 객체로 대체 가능해야 합니다. 그러니까 자식 클래스는 부모의 기능과 메서드를 완저히 가지고 있어야 합니다. 

 

인터페이스 분리의 원칙

사용하지 않는 인터페이스가 클라이언트에 영향을 끼치면 안된다는 말로, 이를 위해 인터페이스를 작은 단위로 쪼개서 관리를 해야 합니다. 

 

의존 관계 역전 원칙

변경이 많은 코드가 있고 변경이 적은 코드가 있다고 했을때, 변경이 적은 코드가 변경이 많은 코드에게 의존하면 안된다는 원칙입니다. 

 

이때 가장 중요하게 생각하는게 높은 응집력, 낮은 결합도인데요. 

그러니까

변경사항이 생겼을 때 특정 한군데를 수정해서 문제를 해결할 수 있다면 응집도가 높다는 것이고 

다른 곳에 영향이 적다면 낮은 결합도를 의미합니다. 

=> 변경사항이 생겼을 때 빠르고 유연하게 대처 할 수 있다. 

 

그 동안 객체 지향을 공부하면서도 그래서 내가 코드를 작성할 때 어떤 느낌으로 코드를 작성해야 하는지를 알기 힘들어 적용을 못했는데요. 구체저인 지침 사항을 알수 있는 강의라서 글로 남겨 봅니다.