본문 바로가기

Java

객체 지향 프로그램(OOP)

객체 지향 프로그래밍은

소프트웨어 개발에서 사용되는 프로그래밍 패러다임 중 하나로,

다양한 객체들이 협력하여 하나의 애플리케이션으로 동작하는 프로그래밍 방법입니다.

 

장점

상대 객체의 세부 정보를 알 필요 없이

그저 객체에 무언가를 요청만 하면 된다는 점이 있습니다.

 

핵심 개념

클래스와 객체

클래스 == 객체를 생성하기 위한 템플릿입니다.

객체 == 클래스의 인스턴스, 데이터와 해당 데이터를 처리하기 위한 메서드를 포함합니다.

 

추상화

객체의 공통적인 속성과 기능을 추출하여 정의를 해 둔 것입니다.

 

자동차와 오토바이라는 클래스가 있으면 

그 클래스들의 공통적인 부분은 전진과 후진,.. 등으로 볼 수 있다.

이때 이 공통적인 부분을 가진 추상 클래스 또는 인터페이스를 만들어서 사용을 할 수 있다.

 

 

상속

상속 ==

하위 클래스가 상위 클래스의 특성과, 메서드를 상속받는 개념입니다..

상속을 사용하면 코드의 재사용성을 높일 수 있습니다.

 

위의 추상화 부분에서 만들어진 추상클래스, 인터페이스의 기능들을

사용할 클래스에 extends, implements를 사용해서 상속을 받을 수 있다.

이렇게 하면 각 클래스에서 추상클래스, 인터페이스의 기능들을 사용할 수 있게 된다.

 

다형성

같은 이름의 메서드가 다양한 형태로 작동할 수 있는 능력입니다.

상위 클래스에 정의된 메서드가 하위 클래스에서 다르게 구현될 수 있습니다.

 

이를 통해 유연하고 확장 가능한 코드를 작성할 수 있고,

새로운 기능을 쉽게 추가할 수 있습니다.

 

공통적인 부분을 상속받은 자동차, 오토바이에서

상위클래스의 메서드를 사용할 수 있는데

이를 각 클래스에서 상위클래스의 메서드를 가지고 내용을 바꿀 수 있다.

 

or

 

메서드를 정의를 할 때 매개변수가 중복이 되지 않으면 메서드의 이름은

중복이 되어도 문제가 없다.

 

 

캡슐화

객체의 데이터와 메서드를 하나로 묶는 개념입니다.

이를 통해 데이터를 보호할 수 있습니다.

 

해당 클래스의 필드들을 외부에서 건드리지 못하게 private으로 

해당 클래스 내에서만 사용이 가능하게 막아둘 수 있다.

외부에서 사용할 일이 있으면 public으로 메서드를 만들어서 사용이 가능하다.

 

 

5대 원칙

SOLID

 

SRP(단일 책임 원칙)

한 클래스에는 한 책임만 있어야 하는 원칙입니다.

 

OCP(개방 폐쇠 원칙)

자신의 확장에는 열여있어야하고 주변의 변화에 대해서는 닫혀있어야하는 원칙입니다.

 

LSP(리스코프 치환 원칙)

자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.

 

ISP(인터페이스 분리 원칙)

인터페이스를 클라이언트에 특화되도록 분리시키라는 설계 원칙

 

DIS(의존 역전 원칙)

추상 클래스 또는 상위 클래스는 구체적인 구현체 또는 하위 클래스에 의존하면 안 된다는 원칙입니다.