객체 지향적 프로그래밍(OOP)

이상수·2022년 11월 30일
0

Java, Spring

목록 보기
1/5

0. POJO(Plain Old Java Object)

  • 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트

1. Object-Oriented Programming

  • 프로그래밍에서 필요한 데이터를 추상화 시켜 '상태와 행위를 가진 객체'로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 기법

1). 장점

  • 코드의 재사용성이 높음
  • 유지보수가 쉬움 , 수정해야 할 부분이 클래스 내부 멤버 or 메서드로 존재
  • 대형 프로젝트에서, 업무 분담에 용이

2). 단점

  • 처리 속도가 상대적으로 느림
  • 객체가 많으면 용량이 커질 수 있음
  • 설계시 많은 시간과 노력이 필요

2. OOP 프로그래밍 특징

1). 클래스와 객체

  • 클래스 : 객체를 만들기 위하여 데이터를 '상태, 행위, 변수, 메서드'로 정의한 것으로 객체를 만들기 위한 메타데이터, 틀 같은 존재
  • 객체 : 클래스에서 정의한 것을 토대로 실제로 데이터를 할당한 데이터

2). 캡슐화

  • 데이터와 코드를 외부에서 알 수 없게 보호
  • 객체의 역할을 데이터와 기능으로 묶어서 관리 하는것

3). 추상화

  • 객체들의 공통적인 특징(변수, 메소드)등을 묶어 표현한것
  • 인간의 예로들면, 손, 발, 이름 등 공통된 정보들을 모아놓은 것

4). 상속화

  • 부모클래스의 속성을 그대로 이어 받아 사용하고 자식클래스에서 이 속성들을 원하는 대로 재정의하여 사용할 수 있게 한것

5). 다형성

  • 오버로딩, 오버라이딩등으로 다른 파라미터등을 가진 동일한 메소드를 호출하여 사용

3. OOP 5원칙 (SOLID)

  1. 단일 책임 원칙(SRP, Single Responsibility Principle)
  • 한 클래스는 하나의 책임만을 가져야 한다.
  1. 개방 폐쇠 원칙(OCP : Open/Closed Principle)
  • 확장에는 열려있고 변경에는 닫혀있음
  1. 리스코프 치환 원칙(LSP : Liskov’s Substitution Principle)
  • 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
  • 자식클래스는 부모클래스에서 가능한 행위를 모두 수행할 수 있어야함
  1. 인터페이스 분리 원칙(ISP : Interface Segregation Principle)
  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
  • 자신이 사용하지 인터페이스는 구현하지 않아야함
  1. 의존관계 역전 원칙 (DIP : Dependency Inversion Principle)
  • 구체화된 클래스보다 추상클래스, 인터페이스에 의존해야한다.
  • 의존 관계를 맺을 때, 변화하기 쉬운것 보단 변화하기 어려운 것에 의존해야 한다는 원칙

ex) 예를들어, 캐릭터 클래스가 다음과 같을 때, 이 캐릭터의 무기를 다른것으로 바꾸기 위해서는
내부 필드를 바꿔야하는데, 이는 개방페쇠원칙에 어긋남

public class OneHandSword
{
    private final String NAME;
    private final int DAMAGE;
}


public class Character
{
    private final String NAME;
    private int health;
    private OneHandSword weapon;
}
profile
Will be great Backend-developer

0개의 댓글