프로그래밍 면접 이렇게 준비한다?

[필기,면접]객체지향 프로그래밍

vhxpffltm 2019. 4. 10. 20:54

대부분이 Java, Phyton 등을 사용하면서 객체지향언어에 대해 이해를 하고 있을 것 같다. 그래도 본 책에 있는 내용을 정리해보았다. 필자는 C++사용자라 가비지 컬렉터에 대해 잘 모르지만 면접에서 자주 물었던 개념이다.

C++ 사용자라면 스마트 포인터에 대해서도 알고있으면 좋다.

 

객체지향 프로그래밍

다형성 : 한 클래스에서 서로다른 매개변수로 한 메서드를 두가지 버전으로 정의, 부모 클래스와 서브클래스에서 정의한 메소드를 다르게 정의하여 서브 클래스의 인스턴스에 대해서는 서브클래스에서 정의한 메서드가 부모 클래스에서 정의한 메서드를 오버라이드하도록 할 수 있음


가비지 컬렉터 : 메모리할당을 추적하고 할당된 메모리가 더 이상 필요없을 때 자동으로 해체하는 작업

 

스마트 포인터 : 메모리 누수(memory leak)로부터 프로그램의 안전성을 보장하기 위함. 스마트 포인터(smart pointer)란 포인터처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해 줍니다.



인터페이스 : 클래스 계층 구조와는 독립적으로 API(애플리케이션 프로그래밍 인터페이스)를 정의하는 같은 역할,
                어떤 클래스에 특정 인터페이스에서 정한 메서드가 있다면 그 클래스는 해당 인터페이스를 구현한다고 표현, 별도로 일련의 연관된 메서드 선언 서로 관련이 없는 클래스에서 개념적으로 연관된 기능을 만들 방식이 필요하지만 그 기능을 구현하는 방법이 다를 때 좋음

추상클래스 :  메서드 중 일부는 정의하지 않고 서브클래스에서 정의해서 쓰도록 남겨둠 -> 인스턴스는 만들 수 없다
                C++ : 순수가상함수로만 추상클래스를 선언 
                 모든 메소드를 정의하지 않는 불완전하게 정의된 클래스
                 그것을 베이스 클래스로 상속해서 더 구체적인 클래스를 만들어서 쓰는 경우 좋음

가상함수 : 그 메서드를 실제로 호출하는 객체가 어떤 클래스인지에 따라 구현이 결정되는 메서드

다중상속 : c++ 가능, Java, C#불가능 

Ex) A ->  B  -> D 인 경우 A클래스의 데이터맴버에 대해 D는 어떤 클래스의 맴버를 쓸지 모호한 상황 발생        
                 C  -> D
                                                 파생된 객체가 생성될 떄, 베이스 클래스 초기화 순서문제,