Reading/스프링 입문을 위한 자바 객체지향의 원리와 이해

Reading/스프링 입문을 위한 자바 객체지향의 원리와 이해

7. 스프링 삼각형과 설정 정보_AOP, PSA

2. AOP - Aspect? 관점? 핵심 관심사? 횡단 관심사? AOP는 Aspect-Oriented Programming의 약자이고, 이를 번역하면 관점 지향 프로그래밍이 된다. 스프링 DI가 의존성에 대한 주입이라면 스프링 AOP는 로직(code) 주입이라고 할 수 있다. 위 그림을 보면 입금, 출금, 이체 모듈에서 로깅, 보안, 트랜잭션 기능이 반복적으로 나타나는 것을 볼 수 있다. 프로그램을 작성하다 보면 이처럼 다수의 모듈에 공통적으로 나타나는 부분이 존재하는데, 바로 이것을 횡단 관심사(cross-cutting concern)라고 한다. 코드 = 핵심 관심사 + 횡단 관심사 핵심 관심사는 모듈별로 다르지만 횡단 관심사는 모듈별로 반복되어 중복해서 나타나는 부분이다. 남자와 여자의 삶을 프로그..

Reading/스프링 입문을 위한 자바 객체지향의 원리와 이해

7. 스프링 삼각형과 설정 정보_IoC/DI

디자인 패턴은 읽어도 아직은 이해가 안 되는 부분이 많고 마침 오늘 스프링 삼각형을 배웠기에 건너 뛰고 7장을 먼저 읽기로 결정했다😂 1. IoC/DI - 제어의 역전/의존성 주입 1-1. 프로그래밍에서 의존성이란? 의사 코드 운전자가 자동차를 생산한다. 자동차는 내부적으로 타이어를 생산한다. 자바로 표현 new Car(); Car 객체 생성자에서 new Tire(); 의존성을 단순하게 정의하면 다음과 같다. 의존성은 new다. new를 실행하는 Car와 Tire 사이에서 Car가 Tire에 의존한다. 먼저 스프링을 적용하지 않은 기존 방식으로 자바 코드를 작성한 예제다. public interface Tire { String getBrand(); } public class KoreaTire implem..

Reading/스프링 입문을 위한 자바 객체지향의 원리와 이해

5. 객체 지향 설계 5원칙 - SOLID

개요 요리로 비유해서 객체 지향의 4대 특성이 주방기구라면 주방기구를 올바르게 사용하는 방법을 SOLID 라고 할 수 있다. 객체 지향 설계의 5원칙, 바로 SOLID는 아래 5가지 원칙의 앞 머리 알파벳을 따서 부르는 이름이다. SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Principle): 개방 폐쇄 원칙 LSP(Liskov Substitution Principle): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Principle): 의존 역전 원칙 이 원칙들은 응집도는 높이고 결합도는 낮추라는 고전 원칙을 객체 지향의 관점..

Reading/스프링 입문을 위한 자바 객체지향의 원리와 이해

4. 자바가 확장한 객체 지향

이번 장에서는 자바가 객체 지향을 확장하기 위해 사용하는 키워드와 개념을 살펴보자. abstract 키워드 - 추상 메서드와 추상 클래스 추상 메서드(Abstract Method)를 간단하게 설명하면 선언부는 있는데 구현부가 없는 메서드를 의미한다. 추상 메서드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스(Abstract Class)로 선언해야 한다. 물론 추상 메서드 없이도 추상 클래스를 선언할 수는 있다. 그럼 추상 메서드는 어떤 것이고, 왜 필요할까? public class 동물 { void 울어보세요() { System.out.println("나는 동물! 어떻게 울어야 하나요?"); } } public class 쥐 extends 동물 { void 울어보세요() { System.out.pri..

Reading/스프링 입문을 위한 자바 객체지향의 원리와 이해

3. 자바와 객체 지향

객체 지향은 인간 지향이다 프로그래밍 언어의 발전사를 보면 개발자를 더욱 편하고 이롭게 하기 위한 과정임을 알 수 있다. 그러나 절차적/구조적 프로그래밍까지의 과정은 인간이 기계를 이해하려는 노력에서 크게 벗어나지 못했다. 특히 포인터의 개념은 기계 수준으로 눈높이를 낮추지 않으면 이해하기 매우 힘든 부분이다. 그런데 “왜 우리가 기계 종속적인 개발을 해야 하는가?”라고 하는 의문이 생겼고 “우리가 눈으로 보고, 느끼고, 생활하는 현실 세계처럼 프로그래밍할 수는 없을까?”라는 고민 속에서 객체 지향의 개념이 탄생했다. 객체 지향이 현실 세계를 반영한다는 말은 이미 오래 전에 객체 지향 언어의 틀을 만든 누군가가 한 말이다. 그 증거가 바로 ‘객체’이다. 눈으로 보여지는 것, 손으로 만져지는 것, 머릿속으..

Reading/스프링 입문을 위한 자바 객체지향의 원리와 이해

2. 자바와 절차적/구조적 프로그래밍

자바 프로그램의 개발과 구동 자바의 가상 세계는 현실 세계를 그대로 모방하고 있다. 현실 세계에서 소프트웨어, 즉 프로그램은 개발자가 개발 도구를 이용해 개발하고 운영체제를 통해 하드웨어 상에서 구동된다. 자바 개발 도구인 JDK를 이용해 개발된 프로그램은 JRE에 의해 가상의 컴퓨터인 JVM 상에서 구동된다. JDK: Java Development Kit / 자바 개발 도구 JRE: Java Runtime Environment / 자바 실행 환경 JVM: Java Virtual Machine / 자바 가상 기계 위 그림에서 보면 JDK는 자바 소스 컴파일러인 javac.exe를 포함하고 JRE는 자바 프로그램 실행기인 java.exe를 포함하고 있다. 자바가 이런 구조를 택한 이유는 한 개의 소스 파일..

Reading/스프링 입문을 위한 자바 객체지향의 원리와 이해

1. 사람을 사랑한 기술

객체 지향은 개발자를 좌절시키기 위해 C++에 도입한 개념이 아니다. 개발자에 대한 깊은 애정과 봉사의 정신으로 더 쉬운 프로그래밍을 위해 제안한 프로그래밍 방법론인 것이다. 기계어에서 객체 지향 프로그래밍 언어로 1. C 언어 - 강력한 이식성 / One Source Multi Object Use Anywhere 어셈블리어는 프로그램의 소스 파일을 기계의 종류만큼 만들어야 했다. 하지만 C언어의 등장으로 이제는 소스 파일을 단 하나만 만들면 된다. 하나의 소스 파일을 각 기계에 맞는 컴파일러로 컴파일만 하면 각 기계에 맞는 기계어 목적 파일이 만들어지는 것이다. 하나의 소스 파일이라고 해서 모든 컴퓨터에서 실행이 가능할까? 운영체제는 각각의 특성이 있기에 기종에 맞게 소스를 변경하는 작업을 거쳐야 가능..

조화이트
'Reading/스프링 입문을 위한 자바 객체지향의 원리와 이해' 카테고리의 글 목록