4차산업혁명의 일꾼/웹개발

객체지향개념과 객체 지향설계 디자인패턴에 관하여

르무엘 2021. 12. 22. 14:19

[1] 객체지향에 관하여

1. 객체지향의 기본 : 클래스(설계도)  - jdk의 jvm이 java를 class파일(기계어)로 만듦

2. 객체지향 특성

-상속: 상속된 클래스에 상속 클래스의 설계 들어감

-오버 라이딩 : 상속된 경우 약간의 변경(메서드 변경 등)

-패키지(import) : 클래스들이 모여 패키지를 이룸. 패키지에서 import 해서 해당 객체 사용 가능

-제어자 : 접근제어자(public, protected, private)와 그 외(static, final, abstract, native, transient, synchronized, wolatile, strictfp)

-캡슐화: 중복을 피하고 외부에서 캡슐화로 감춰진 로직 부분을 알 필요 없음

-다형성 : 여러 가지 형태를 가질 수 있음 -> 하나의 참조 변수로 여러 타입의 객체를 참조할 수 있는 것(조상 타입의 참조 변수로 자손 타입의 객체를 다룰 수 있음)

-추상 클래스 : 공통의 특징을 모아 추상화시킨 클래스(추상화된 클래스를 상속해서 구체화 가능)

-인터페이스 : 기능부 분만 있는 인터페이스(메서드 껍데기만 있음)

3. 객체지향 기본 개념

* 클래스 - 함수(기능)와 변수(속성)

  => 함수를 호출하면 그 함수만을 위한 메모리 공간이 할당되는데, 이 메모리 공간을 스택이라고 부릅니다.

  => 클래스를 생성하여 메모리에 있는 상태를 인스턴스라 하고 멤버 변수를 다른 말로 인스턴스 변수라고 합니다.


[2] 객체지향 5원칙(SOLID)

객체지향 5원칙은 SOLID라고 외우면 쉽다고 한다.

1.SRP(단일 책임원칙) - 어떠한 클래스를 변경하는 이유는 한 가지뿐이어야 한다.  

2.OCP(개방 폐쇄 원칙)- 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다. 상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신은 변화에 대해서는 폐쇄적이지만, 인터페이스는 외부의 변화에 대해서 확장을 개방해 줄 수 있다.   

3.LSP(리스 코프 치환 원칙) - 서브타입은 언제나 자신의 기반(상위) 타입으로 교체할 수 있어야 한다. 

4.ISP(인터페이스 분리 원칙) - 클라이언트는 자신이 사용하지 않는 메서드에 의존관계를 맺으면 안 된다. 

5.DIP(의존 역전 원칙) - 자신보다 변하기 쉬운 것에 의존하지 말아야 한다.

쭉 보면 객체지향 5원칙의 코어는 견고하게 즉 객체 하나가 잘 설계되어 상속과 인터페이스로 교류 즉 내부적으로 폐쇄적이고 외부적으로 교류적이다. 내부적으로 폐쇄적이기에 자신보다 변하기 쉬운 것에 의존하지 않는다.


시작이 반이다.

[3] 객체지향 설계 디자인 패턴 25가지

객체지향 설계에 있어서 설계는 그 후 계속 프로그램에 영향을 미치기에 정말 중요합니다.

객체지향 설계 시 개발자들이 개발하면서 많이 쓰게 된 것들 중에 유용한 것들을 패턴으로 유형을 나눠 놨습니다.

객체지향의 지향점 POJO특징 (특정 규약, 환경에 종속되지 않는다. -> 순수 자바)

디자인 패턴은 생성 패턴, 구조 패턴 그리고 행위패턴이 있다.

디자인 패턴에서 생성 패턴은 6가지, 구조 패턴은 7가지 행위패턴은 11가지 총 24가지에다가 MVC패턴을 추가로 해서 25가지이다.

 

 디자인 패턴 유형 1 : 생성 패턴 6가지 - 객체를 생성하는 것과 관련된 패턴으로, 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하고 코드의 유연성을 높여다.

Factory Method , Singleton(소켓통신), Prototype, Builder, Abstract Factory , Chaining

 

 디자인 패턴 유형 2 : 구조 패턴 7가지 - 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용될 수 있는 패턴 클래스, 객체들의 구성을 통해서 더 큰 구조를 만들 수  있게 해 준다.

Adapter(110 볼트 vs220 볼트 선택), Composite, Bridge, Decorator(상속의 대안), Facade(건물의 앞쪽 정면 뜻 - 여러 개의 객체와 서브 객체 사이에 복잡한 의존관계 시 facade객체를 두고 interface사용, Flyweight, Proxy(대리인-캐시)

 

 디자인 패턴 유형 3:  행위패턴 - 반복적으로 사용되는 객체들의 상호작용을 패턴화 한 것으로, 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 제공한다. 행위 패턴은 행위 관련 패턴을 사용하여 독립적으로 일을 처리하고자 할 때 사용.

Template Method, Interpreter, Iterator, Observer(변화가 일어났을 때 미리 등록된 다른 클래스에 통보), Strategy(객체의 행위를 바꾸고 싶은 경우 전략만 변경하여 유연하게 확장), Visitor, Chain of responsibility, Command, Mediator, State, Memento

 

도움이 되셨다면 공감과 댓글 부탁드려요

감사합니다^^

 

 

 

LIST