Skip to content

Latest commit

 

History

History
20 lines (12 loc) · 3.41 KB

객체지향 프로그래밍.md

File metadata and controls

20 lines (12 loc) · 3.41 KB

객체 지향 프로그래밍

  1. 객체지향 프로그래밍이란?
  • 현실세계에서 존재하는 사물을 프로그래밍을 통해 표현하는 방식이라고 할 수 있다. 객체 지향 프로그래밍은 캡슐화,상속, 추상화,다형성의 4가지 특징을 갖고 있다. 캡슐화를 예로 들면, private 과 같은 접근제한자를 활용해서 외부에서의 정보접근을 제한하는 것이 해당될 수 있다. 상속은 자식 클래스가 부모 클래스의 속성 및 기능을 물려받는 것인데, 이러한 점에서 다형성과 관계가 깊다. 다형성은 변수나 메서드가 상황에 따라 다른 모습을 갖게 되는 것을 의미한다. 앞서 다형성과 관계가 깊다고 한 이유는, 부모클래스 A와 자식클래스 B를 예로 들면, A a=new B();와 같은 형태로 객체를 생성할 수 있기 때문이다. 뿐만아니라, 인터페이스 면에서도, 공통적인 기능을 인터페이스에 넣게 되면 다형성을 적용해서, 보다 효율적으로 코드를 작성할 수 있게 된다. 추상화는 설계 도면과 같다고 볼 수 있다. 인터페이스로 공통적인 특성을 묶어서 표현하는 것이다. 바로 앞에서 언급한 것과 겹쳐지는 부분이라고 할 수 있다.
  1. 객체지향의 5대 원칙
  • 객체지향의 5대 원칙 SOLID는 SRP, OCP, LSP, ISP, DIP의 총 5가지 원칙으로 구성되어 있다. SRP는 한 클래스는 하나의 책임을 가져야 한다는 것을 의미한다. OCP는 확장에는 열려있지만, 변경에는 닫혀 있어야 한다는 것을 의미한다. LSP는 프로그램의 정확성을 깨뜨리지 않으면서 한 객체를 하위 타입의 인스턴스로 변경할 수 있어야 한다는 원칙이다. ISP는 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 1개보다 낫다는 원칙이다. DIP는 상위 클래스가 하위 클래스에 의존해서는 안된다는 원칙이다.
  1. getter, setter를 사용하는 이유
  • getter, setter를 사용하는 이유는 크게 세 가지 관점에서 존재한다고 생각합니다. 첫 번째는 데이터 은닉을 위함이고, 두 번째는 스프링에서 객체에 의존성을 주입하기 위함이며, 세번 째는 스프링에서 json 데이터를 다룰 때 setter와 getter의 존재에 따라 매칭될 수 있기 때문입니다.
  1. 접근 제한자
  • 접근 제한자는 특정 객체 및 변수, 메서드에 대한 외부 접근을 제한하기 위해 존재하는 예약어로, 총 네 가지 종류가 존재합니다. 먼저 default는 클래스가 정의되어 있는 패키지 내에서만 접근이 가능합니다. private은 정의된 해당 클래스 내에서만 접근이 가능합니다. protected는 클래스가 정의된 패키지 내부와 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능합니다. public은 어떤 클래스에서도 접근이 가능합니다.
  1. 오버로딩 vs 오버라이딩
  • 오버로딩은 메서드명은 동일하지만, 매개변수 타입 및 갯수가 다를 수 있는 형태를 의미한다. 단, 리턴타입의 경우 같을수도 다를 수도 있지만, 리턴타입만 다를 수는 없다. 오버라이딩은 부모클래스에 정의된 메서드의 내용을 자식클래스에서 재정의하는 것을 의미한다. 대표적으로 많이 접할 수 있는 경우가 toString이라고 할 수 있다.