개발/OOP, Design Pattern
-
[객체지향의 원리와 이해] 프록시 패턴 (proxy pattern)개발/OOP, Design Pattern 2021. 1. 2. 01:48
프록시 패턴 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴 실제 서비스 객체가 가진 메소드를 직접 실행하지 않고, 대리자 객체를 대신 투입해 실행하는 패턴이다. 클라이언트 쪽에서는 실제 서비스를 통해 실행하는지, 대리자 객체를 통해 실행하는지 알 수 없다. 대리자를 둠으로써 실제 서비스의 메소드 호출 전후로 별도 로직을 수행하는 방식으로 제어 흐름이 가능하다. 개방 폐쇄 원칙(OCP)와 의존 역전 원칙(DIP)를 적용한 패턴이다. 중요 포인트 대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다. 대리자는 실제 서비스에 대한 참조 변수를 갖는다.(합성) 대리자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 클라이언트에게 돌려준다. 대리자는 실제 ..
-
[객체지향의 원리와 이해] (3-2) 자바와 객체지향 - 추상화:모델링개발/OOP, Design Pattern 2020. 12. 27. 14:27
추상화 : 모델링 추상 : [심리] 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용 피카소같은 화가의 작품을 보면 실제 사람과 비슷한 모습을 하지 않고 어떠한 특징들만을 표현하고 있다. 계급을 사람의 키로 표현한다던가 하는 방식으로 말이다. 사전적 정의처럼 추상화 한다는 것은 어떠한 것을 표현할 수 있는 공통된 특징과 속성을 파악하여 표현하는 것을 말한다. 추상화는 모델링이다 객체지향의 4대 특성(캡,상,추,다)는 클래스를 통해 구현된다. 클래스를 통해 '사람'을 구현한다고 했을 때, 먼저 클래스 설계를 한다. 설계를 하기 위해 사람의 공통된 특성을 뽑아보자. - 사람 - 시력 - 몸무게 - 나이 - 직업 - 연봉 - 먹다() - 마시다() - 눕다() - 자다() - ..
-
[객체지향의 원리와 이해] (3-1) 자바와 객체지향 - 개요 (객체지향의 4대 특성)개발/OOP, Design Pattern 2020. 12. 25. 02:16
객체 지향은 인간 지향이다. 자바 이전에 언어들은 모두 인간의 편의를 위해 하이-레벨에서 고려되었지만, 포인터 같은 개념은 기계 수준의 눈높이로 낮추지 않으면 이해하기 어렵다. 그래서 현실 세계처럼 프로그래밍 하기위해 객체 지향 개념이 탄생했다. 구조적 프로그래밍 언어에서 중요한 함수는 중복 제거와 논리의 분할를 만들었고, 그 다음 객체 지향이 나타났다. 0과 1로 이루어진 기계에 맞추던 사고방식을 현실의 Object에 맞춰 사물을 인지하는대로 프로그래밍 하자는 것이 그 출발이다. 그래서 직관적이다. 객체 지향의 큰 그림 세상 모든 사물은 객체이다. 각각의 사물은 고유하다. 사물은 속성을 갖는다. 사물은 행위를 한다. 그리고 인간은 사물을 분류(class)해서 이해한다. 객체지향의 4대 특성 - 캡! 상..
-
[객체지향의 원리와 이해] (02) 자바와 절차적/구조적 프로그래밍개발/OOP, Design Pattern 2020. 12. 23. 01:16
깃허브 자바와 절차적/구조적 프로그래밍 변수가 어떻게 메모리에 저장되고 사용되는지와 메서드가 어떻게 호출되고 메모리에 어떤 변화를 일으키는지 살펴본다. 자바 프로그램의 개발과 구동 JVM의 존재와 역할을 아는 것은 자바 개발 환경을 이해하기 위해 필수이다. JVM은 가상 기계이고 현실세계와 가상세계를 비교하면 다음과 같다. 현실세계 - 가상세계 SW 개발도구 - JDK (JVM용 SW 개발 도구) 운영체제 - JRE (JVM용 OS) 하드웨어 - JVM (가상의 컴퓨터)(윈도우 JDK) JDK는 javac.exe를 포함하고, 이를 통해 컴파일해서 만들어진 목적 파일을 자바 가상 기계가 실행한다. 자바 메모리 구조 메모리는 |코드 영역|데이터 저장 영역| 으로 나눌 수 있고, 그 중에 데이터 저장 영역은 ..
-
[객체지향의 원리와 이해] (01) 사람을 사랑한 기술개발/OOP, Design Pattern 2020. 12. 22. 00:59
신기술은 이전 기술의 어깨를 딛고 스프링을 비롯한 모든 신기술은 이전 기술의 철학과 기법에 새로운 철학과 기법을 더해 나타난다. 스프링은 그 발전사의 정점에 가깝고, 스프링을 이해하기 위해 이전 기술들을 간단하게 이해할 필요가 있다. 기계어에서 객체 지향 프로그래밍 언어로 기계어 최초에 인간은 0과 1로만 이루어진 기계어로 프로그래밍을 했었다. 이러한 방식의 프로그래밍은 눈에 제대로 들어오지도 않을 뿐다. (010101010000000100001001이 애드삭에서 1과 3을 더하는 기계어 프로그래밍 코드라는데 당연히 알기 쉽지않다.) 그리고 기계어 방식은 CPU 별로 코드가 다르다. 어셈블리어 기계어를 인간의 언어로 표현한 것으로 예를 들어 더하는 연산을 CPU에 따라 add, plus로 표현한다. 그리..