java 16

자바 객체 지향의 원리와 이해_Chapter07_스프링 삼각형과 설정 정보

스프링을 이해하는 데는 POJO(Plain Old Java Object)를 기반으로 스프링 삼각형이라는 애칭을 가진 IoC/DI, AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대한 이해가 필수다. 그럼 이 삼각형에 대해 알아보자. IoC(Inversion Of Control)/DI(Dependency Injection) - 제어의 역적/ 의존성 주입 스프링은 DI를 통해 IoC가 일어난다. 그럼 DI는 뭘까? DI는 '의존성 주입'이다. 그럼 또 의존성은 무엇일까? 이 책의 저자는 의존성은 new라 설명한다. 추가적인 설명을 들자면 '의존한다'는 것은 의존대상, B라는 클래스가 변하면 그것이 A라는 클래스에 영향을 미친다는 뜻이다. 이는 하나의 모듈이 바뀌면 의존한 다른 모듈까지 변경이 일어..

java 2023.03.22

자바 객체 지향의 원리와 이해_Chapter05_객체 지향 설계 5원칙 - SOLID

도구를 올바르게 사용하는 법이 있는 것처럼 객체 지향의 특성을 올바르게 사용하는 방법, 즉 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계해 나가는 방법이나 원칙이 존재할까? SOLID 원칙이 바로 그것이다. SOLID는 아래 5가지 원칙의 앞 머리 알파벳을 따서 부르는 이름이다. SRP(Single Responsibility Principle) : 단일 책임 원칙 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. OCP(Open Closed Principle) : 개방 폐쇄 원칙 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 한다. 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다. LSP(Lis..

java 2023.03.21

자바 객체 지향의 원리와 이해_Chapter04_자바가 확장한 객체 지향

객체 지향 4대 특성을 넘어 자바가 객체 지향을 확장하기 위해 사용하는 키워드와 개념을 살펴보자. abstract 키워드 - 추상 메서드와 추상 클래스 추상 메서드(Abstract Method)를 간단하게 설명하면 선언부는 있는데 구현부가 없는 메서드를 말한다. 추상 메서드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스(Abstract Class)로 선언해야 한다. 추상 클래스는 인스턴스, 즉 객체를 만들 수 없다. 다시말해 new를 사용할 수 없다. 추상 클래스는 하위 클래스에 상속되고, 하위 클래스에서는 추상 메서드의 구현을 강제한다. 보통 absctract 키워드는 모든 하위 클래스에는 필요하지만 상위 클래스에서는 사용하면 안되는 경우나 필요없는 경우에 사용한다. 생성자 클래스의 인스턴스, 즉 ..

java 2023.03.21

자바 객체 지향의 원리와 이해_Chapter03_자바와 객체 지향

객체 지향은 인간 지향이다. 객체 지향을 이해하기 위해 먼저 큰 그림을 생각해 보자. 세상에 존재하는 모든 것은 사물, 즉 객체(object)다. 각각의 사물은 고유하다. 사물은 속성을 갖는다. 사물은 행위를 한다. 그리고 사물 하나하나 이해하기보다는 사물을 분류(class)해서 이해하는 것이 인간의 인지법이다. 직립보행을 하며 말을 하는 존재를 사람이라 분류한다. 연미복, 짧은 다리, 날지 못하는 새를 펭귄이라 분류한다. 객체 지향은 인간의 인지 및 사고 방식까지 프로그래밍에 접목하는 인간 지향을 실천하고 있다. 객체 지향의 4대 특성 보통 객체 지향의 4대 특성이라 함은 다음과 같다. 캡슐화(Capsulation) 상속(Ingeritance) 추상화(Abstraction) 다형성(Polymorphis..

java 2023.03.20

자바 객체 지향의 원리와 이해_Chapter02_자바와 절차적/ 구조적 프로그래밍

자바는 객체 지향 프로그래밍을 기반으로 하는 프로그래밍 언어이다. 객체 지향 프로그래밍은 "객체 지향"과 "프로그래밍"을 결합한 것으로, 이번 챕터에서는 자바 프로그래밍 언어를 살펴보게 된다. 자바 프로그램의 개발과 구동 자바는 "Write Once Run Anywhere(WORA)"라는 특징을 가지고 있어, JDK(Java Development Tools)와 JRE(Java Runtime Environment) 그리고 JVM(Java Virtual Machine) 등의 프로그램이 필요하다. JDK : JVM용 소프트웨어 개발 도구 JRE : JVM용 OS JVM : 가상의 컴퓨터 자바에 존재하는 절차적/구조적 프로그래밍의 유산 객체 지향 프로그래밍은 절차적/구조적 프로그래밍의 발전된 형태이다. 절차적/..

java 2023.03.17

자바 객체 지향의 원리와 이해_Chapter01_사람을 사랑한 기술

개념과 제품 해당 책에서는 저자가 개념과 제품을 명확하게 구분해놓았다. 개념은 CBD(Component Based Development), SOA(Service Oriented Architecture), OOP(Object Oriented Programming) 등의 철학과 기술을 의미하며, 제품은 이러한 개념을 바탕으로 구현된 것이다. 예를 들어 OOP의 개념을 실제로 적용한 제품으로는 Java, C++ 등의 객체 지향 언어가 있다. 마찬가지로, 스프링 프레임워크도 하나의 제품으로 소개했다. 그렇다면 스프링은 어떤 개념에서 구현된 제품일까? 필자는 POJO(Plain Old Java Obejct)가 아닐까 생각했다. 무겁고 어렵던 기존의 기술(EJB, Java EE등)을 탈피하고자 탄생했다고 알고 있었..

java 2023.03.17

java_chapter14_람다와 스트림

1. 람다식 java 1.8부터 추가된 람다식으로 인해 자바는 객체지향언어인 동시에 함수형 언더가 되었다. 1.1 람다식이란?? 람다식은 메서드를 하나의 '식(expression)'으로 표현한 것이다. 람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해준다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)'이라고도 한다. 장점은 이뿐만이 아니다. 람다식은 메서드의 매개변수로 전달되어지는 것이 가능하고, 메서드의 결과로 반환될 수도 있다. 즉, 메서드를 변수처럼 다루는 것이 가능해진 것이다. 1.2 람다식 작성하기 매개변수 선언부와 몸통{} 사이에 '->'를 추가하면 된다. //기존 메서드 반환타입 메서드이름(매개변수 선..

java 2023.03.13

java_chapter13_쓰레드

1. 프로세스와 쓰레드 프로세스(process) : 실행 중인 프로그램 쓰레드(thread) : 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것 현재 우리가 사용하는 대부분의 OS는 멀티태스킹(multi-tasking)을 지원하기 때문에 여러 개의 프로세스가 동시에 실행될 수 있다. 또한 멀티쓰레딩은 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것이다. 멀티쓰레딩의 장단점 장점 CPU의 사용률을 향상시킨다. 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성이 향상된다. 직업이 분리되어 코드가 간결해진다. 단점 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에 발생할 수 있는 동기화 교착상태 2. 쓰레드의 구현과 실행 쓰레드를 구현하는 방법은 Thread클래스를 ..

java 2023.03.11

java_chapter12_generics, enumeration, annotation

1. Generics 1.1 Generics란?? 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크(compile-time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 타입 안정성을 높인다는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준 다는 뜻이다. 또한 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. 지네릭스의 용어 class Box {} Box : 지네릭 클래스. 'T의 Box' 또는 'T Box'라고 읽는다. T : 타입 변수 또는 타입 매개변..

java 2023.03.11

java_Chapter08_예외처리

1. 예외처리 1.1 프로그램 오류 오류는 발생시점에 따라 컴파일 에러(compile time error)와 런타임 에러(runtime error)로 나눈 수 있는데, 컴파일 에러는 컴파일 할 때 발생하는 에러이고 프로그램의 실행도중에 발생하는 에러를 런타임 에러라 한다. 이 외에도 논리적 에러(logical error)가 있는데 이는 의도와 다르게 동작하는 것을 말한다. 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 에러(error)와 예외(exception) 두 가지로 구분했다. 에러는 프로그램 코드에 의해서 수습될 수 없는 심각한 오류고, 예외는 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류이다. 예외는 발생하더라도 프로그래머가 이에 대한 적절한 코드를 미리 작성해 ..

java 2023.03.10