상세 컨텐츠

본문 제목

기술면접 - 객체지향 프로그래밍

스파르타 코딩캠프

by lucar 2024. 12. 27. 22:03

본문

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

데이터를 조작하는 방법을 하나의 객체로 묶어 프로그램으로 설계하고 개발하는 방식이다.

 

객체를 중심으로 코드가 구성되며, 재사용과 유지보수성이 뛰어난 특징이 있다.


 

핵심 개념

 

객체

- 데이터와 이를 처리하는 메서드를 포함하는 하나의 독립된 단위

 

클래스

- 객체를 생성하기 위한 청사진

- 같은 속성과 메서드를 가진 객체들을 생성하기 위해 사용

 

상속

- 기존 클래스의 속성과 메소드를 새로운 클래스가 물려받는 기능

- 재사용성을 높이고 코드 중복을 줄임

 

캡슐화

- 데이터를 외부에서 접근하지 못하도록 막고, 접근을 제어하는 메소드를 사용하는 방식(getter/setter/property)

- 데이터를 보호하고 불필요한 접근을 막음

 

다형성

- 같은 이름의 메소드가 서로 다른 클래스에서 다르게 동작하도록 하는 기능

- 코드의 유연성과 확장성을 높임

 

추상화

- 불필요한 내부 구현을 숨기고 객체의 중요한 기능만 노출시키는 기능

- 인터페이스나 추상 클래스를 통해 구현


 

객체지향 프로그래밍의 장점

 

재사용성

- 클래스와 객체를 재사용 할 수 있어 코드 작성 시간이 단축됨

 

유지보수 용이

- 모듈화된 구조로 인해 수정과 디버깅이 쉬움

 

확장성

- 새로운 기능을 쉽게 추가할 수 있음

 

현실 세계 모델링

- 객체라는 개념은 현실 세계의 사물을 쉽게 프로그래밍으로 옮길 수 있음


 

객체지향 설계원칙 (SOLID)

 

단일 책임 원칙 (Single Responsibillity Principle)

- 정의 : 클래스는 단 하나의 책임만 가져야 한다.

- 목적 : 클래스가 한 가지의 일만 수행하도록 하여 코드의 응집도를 높이고 변경에 유연하도록 설계

 

개방-폐쇄 원칙 (OCP : Open/Closed Principle)

- 정의 : 소프트웨어는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.

- 목적 : 기존 코드를 수정하지 않고 새로운 기능을 추가할 수 있도록 설계함

 

리스코프 치환 원칙(LSP : Liskov Substitution Principle)

- 정의 : 서브클래스는 부모 클래스를 완전히 대체할 수 있어야 한다.

- 목적 : 자식 클래스가 부모 클래스의 계약을 준수하여 프로그램의 동작을 깨지 않도록 설계함

 

인터페이스 분리 원칙(ISP : Interface Segregation Principle)

- 정의 : 하나의 큰 인터페이스를 여러 작은 인터페이스로 나누어야 한다.

- 목적 : 사용하지 않는 메서드에 의존하지 않도록 설계함

 

의존 역전 원칙(DIP : Dependency Inversion Principle)

- 정의 : 고수준 모듈은 저수준 모듈에 의존해서는 안되며 둘 다 추상화에 의존해야 한다.

- 목적 : 구체적인 구현 대신 추상화에 의존하도록 설계하여 유연성을 높입니다.

관련글 더보기