-
기술 면접 예상 질문 - 객체지향이란 무엇인지 설명해주세요.
-
기술 면접 예상 질문 - 상속이란 무엇인지 프로젝트 내에 적용해 본 부분과 함께 예를 들어 설명해주세요.
기술 면접 예상 질문 - 객체지향이란 무엇인지 설명해주세요.
객체 지향은 모든 것을 객체단위로 생각하여 객체들간의 상호작용을 통해 사건이 발생한다는 개념입니다.
객체 지향 프로그래밍은 어떤 데이터와 기능들을 객체라는 단위로 묶고 분리해 모듈화하고,
객체들간의 상호작용을 통해 동작하도록 프로그래밍을하는 방법으로
재사용성과 유지보수성이 높다는 특징을 가지고, 핵심 개념으로 캡슐화, 상속, 추상화, 다형성 등이 있습니다.
캡슐화는 하나의 객체에서 내부와 외부 인터페이스를 나누어 외부에서의 접근을 제한하여 객체가 잘못 사용되는것을 막고
내부의 데이터를 보호합니다.
비슷한 객체들의 추상화를 통해 공통된 부분을 묶고 상속을 통해 확장성을 높입니다.
그리고 오버로딩 오버라이딩을 통해 하나의 객체,기능이 여러가지 상황에서 유연하게 사용되도록 다형성을 실현합니다.
SOILD는 객체 지향 설계 원칙으로 객체 지향 프로그래밍을 위한 5가지의 원칙입니다.
-
SRP 하나의 클래스는 하나의 책임만을 가져야합니다.
-
OCP 기능을 변경하거나 확장할 수있지만 기능을 사용하는 부분을 변경하지는 않아야 합니다.
-
LSP 상위 타입 객체가 하위타입으로 캐스팅되어도 상위타입으로 동작할 수 있어야 합니다.
-
ISP 여러 인터페이스를 나누어서 변경에 의한 영향을 최소화 해야 합니다.
-
DIP 구체적인 클래스에 의존해서는 안되고 인터페이스나 추상클래스에 의존하도록 설계해야 합니다.
기술 면접 예상 질문 - 상속이란 무엇인지 프로젝트 내에 적용해 본 부분과 함께 예를 들어 설명해주세요.
공통된 부분을 상위 클래스로 만들고 하위 클래스를 만들때 상위 클래스를 이어받은 후 새로 필요한 기능을 추가하는 방법입니다.
프로젝트에서 카드 부분을 구현하는데 카드의 종류에 일반, 아이템, 음식, 행동 카드등이 있었고
아이템, 음식, 행동 카드에는 각각의 추가적인 필드와 기능이 필요했습니다.
그래서 아이템, 음식, 행동 카드 클래스들을 일반 카드를 상속받아서 구현하였고
카드의 일반적인 정보와 기능들에 각각의 상황에 맞는 정보와 기능들을 추가하여
상위 클래스를 재사용하고 각각의 카드에 필요한 기능만을 가질 수 있도록 했습니다.