본문 바로가기

배운 거/C.S

OOP 객체지향 프로그래밍

 

개같이 털렸던 지난 면접의 기억과 더불어
새로운 면접을 준비하면서 정리가 필요한 것들이 있어서

차근 차근 공부해보려고한다.

 


https://youtu.be/cg1xvFy1JQQ

 

OOP란 객체지향프로그래밍의 약어로써 데이터를 하나의 Object로 관리하고,
객체와 객체간의 상호작용을 통해 동작하게 한다.

 

같은 속성의 여러 객체를 만든다고 가정했을 때, 반복된 코드로 여러 객체를 만들 필요없이

Class에서 미리 구조(멤버 필드, 멤버변수)를 작성해두고 이를 생성자(혹은 생성메소드)를 통하여 객체를 쉽게 생성할 수 있다.

즉 Class는 일종의 설계도와 같다. 

캡슐화

데이터와 이를 활용하는 메소드를 캡슐 안에 가두는 것을 의미한다.

(Java와 JavaScript의 경우에서 캡슐은 하나의 클래스를 의미한다.)

이때 접근제어자를 통해 이를 외부에서 데이터에 액세스하거나 수정하는 권한을 설정할 수 있다.

 

즉 캡슐화를 통해서 클래스 데이터에 액세스하거나 수정할 권한을 결정해줄 수 있다.

 

 

접근제어자 
  Public Protected Default Private
클래스 내부 O O O O
패키지 내부 O O O X
자식 클래스 O O X X
전체 O X X X



상속

Class를 작성하게 되면서 부분적으로 일치하는 멤버변수가 있을 경우

코드가 중복되게 되는 데 상속을 통해 반복되는 코드를 줄일 수 있으며

상속받은 부모클래스의 멤버 필드와 메소드를 물려받아 재사용 가능하며

필요한 경우 자식 클래스에서 추가적인 멤버필드를 작성하여 객체 생성이 가능하다.

 

즉. 부모 클래스의 특성과 기능을 물려받아

기능의 일부분을 변경하는게 가능하며

캡슐화를 유지하며 코드 재사용이 용이하다.

 

추상화

클래스에 내부에 작성된 메소드를 외부의 인터페이스를 통해 상호작용하고자 하였을 때,
메소드 내부 구현 로직의 노출을 피할 수 있고

메소드의 로직이 바뀌었을 때도 인터페이스는 동일하기 때문에 해당 클래스의 변수나 메소드의 사용이 가능하다.

 

다형성

(여러개의 형상을 갖는다는 뜻)

메소드 오버라이딩을 통해 자식 클래스에서 작성된 메소드가 

부모 클래스에서 호출되었을 때 자식 클래스에서 작성된 로직으로 동작하게 되는데

하나의 이름으로 호출되는 메소드가 여러 자식클래스에 쓰인 로직으로 구현되게 된다.

 

이때 반환타입은 부모클래스에서 지정한 타입과 일치하여야한다.

 

즉 클래스의 기능은 같지만 구현 방식에 있어서 모양과 모습이 달라지게 되는 것.

이를 다형성이라고 한다.

 

 

 

'배운 거 > C.S' 카테고리의 다른 글

Servelet?  (0) 2022.08.15
CORS ?  (0) 2022.08.14
Rest API?  (0) 2022.08.09
Spring Bean이란?  (0) 2022.07.31
제어 반전 컨테이너-IoC란?  (0) 2022.07.31