cs

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

dever 2021. 7. 14. 14:35

객체지향 프로그래밍에 대해 설명해주세요.

객체지향 프로그래밍은 상태와 행위를 가진 객체들간에 상호작용을 통해 프로그래밍 하는 프로그래밍 패러다임 중 하나 입니다.

객체에 대해서 좀 더 자세히 말씀해주세요

객체는 클래스에서 정의된 것을 토대로 메모리에 할당 된 것으로 프로그램에서 사용하는 변수와 메소드들을 가지고 있는 구별된 메모리 공간입니다. 이 공간은 변수에 할당된 주소를 통해 접근 할 수 있습니다 즉 변수에 객체를 할당 할 수 있고 그 변수를 통해 객체가 가지고 있는 상태와 메소드를 접근 할 수 있습니다.

클래스를 언급하셨는데 클래스는 무엇인가요?

클래스는 상태와 메소드들의 이름과 타입을 결정해논 객체를 만들기 위한 설계도 입니다. 이 클래스를 만드는 것이 객체지향에서 추상화하는것이라 할 수 있습니다. 추상화란 공통의 속성이나 기능을 묶어 이름을 붙이는 것인데 이것이 딱 클래스를 정의 하는 것입니다.

캡슐화는 무엇인가요?

캡슐화도 클래스와 관련이 많습니다. 캡슐화의 뜻은 객체와 속성을 하나로 묶고 실제 구현 내용 일부를 감추어 외부에 은닉한다라는 뜻이 있습니다. 캡슐화는 한마디로 하나로 묶는다는 의미 입니다. 그래서 클래스를 정의하는것도 캡슐화 한다고 할 수 있습니다. 관련된 상태와 기능을 클래스로서 하나로 묶기 때문입니다. 그리고 이렇게 묶인 상태와 기능은 외부에서는 신경쓰지 않고 사용하기 때문에 감춰져 있습니다. 즉 클래스를 정의 한다는 것은 추상화와 캡슐화를 하는 것을 의미합니다.

상속과 다형성에 대해서도 설명해주세요

상속이란 두개의 클래스간에 관계로 하나의 클래스가 다른 하나의 클래스의 상태와 정의를 물려 받는 것을 말합니다. 그대로 가져오는것에서 나아가서 필요한 것은 추가하고 수정하며 새로운 클래스를 만드는 것입니다. 다형성은 다양한 형태를 가지고 있다는 의미로 상속이 존재하기 때문에 생긴 특징인데요 상속을 통해 부모 클래스의 메소드를 수정한 경우 같은 이름의 메소드 이지만 다른 기능을 할 수 있습니다. 이를 메소드 오버라이딩이라합니다. 또한 하나의 클래스 안에서도 파라미터를 다르게하여 같은 이름이지만 다양한 기능을 할 수 있게 하는 메소드 오버로딩도 있습니다.

객체지향에는 몇가지 설계원칙이 있는데요 이것을 설명해주세요

객체지향에는 5가지 설계원칙이 있습니다 앞글자만 따 SOLID라고 부르는데 하나씩 설명해드리겠습니다. S는 단일책임원칙을 말합니다. 클래스는 단 하나의 책임을 가져야 한다는 원칙입니다. O는 개방폐쇠원칙으로 확장에는 열려있고 수정에는 닫혀 있어야 한다는 의미입니다. 즉 기존의 코드의 수정을 최소화하면서 확장 해야 한다는 의미입니다. L은 리스코프 치환 원칙으로 부모클래스가 사용되는곳에 자식클래스를 사용하더라도 프로그램이 잘 동작 해야한다는 원칙입니다. I는 인터페이스 분리 원칙입니다. 자신이 사용하지 않는 인터페이스와는 의존관계를 맺지 말라는 원칙입니다. 마지막으로 D는 의존역전원칙입니다. 고수준의 모듈은 저 수준의 모듈에 의존하면 안된다는 원칙입니다.

'cs' 카테고리의 다른 글

Swift 면접준비 자료구조편  (0) 2021.08.03
운영체제란?  (0) 2021.07.15
함수형프로그래밍이란?  (0) 2021.06.08