도서 39

[도서/스프링 입문] #7 스프링 삼각형과 설정 정보

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. IoC/DI - 제어의 역전/의존성 주입 프로그래밍에서 의존성이란? A가 B를 의존한다는 건 의존대상B가 변하면 A에 영향을 미친다는 의미이다. 결론적으로 전체가 부분에 의존한다고 할 수 있다. 더 깊이 들어가면 전체와 부분인 객체 사이에 집합 관계(Aggregation)와 구성 관계(Composition)로 구분할 수 있다. 집합 관계 : 부분이 전체와 다른 생명 주기를 가질 수 있다. ex) 집과 냉장고 구성 관계 : 부분이 전체와 같은 생명 주기를 가진다. ex) 사람과 심장 앞으로 들 예시 Dirver : 운전자 클래스 Car : 자동차 클래스 Tire : 타이어 인터페이스 KoreaT..

[도서/스프링 입문] #6 스프링이 사랑한 디자인 패턴

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 스프링 프레임워크를 설명하는 공식적인 정의는 "자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크"이다. 각기 다른 소프트웨어 모듈이나 기능을 가진 다양한 응용 소프트웨어 시스템들을 개발할 때 서로 간에 공통되는 설계 문제가 존재하며 이를 처리하는 해결 사이에도 공통점이 있는데 이러한 유사점을 패턴이라 한다. 디자인 패턴은 23개로 나뉘는데 크게 생성(Creational), 구조(structural), 행위(Behavioral) 3가지로 분류된다. 이를 GoF(Gang of Four) 디자인 패턴이라 부른다. 각 분류 별 패턴 더보기 생성 패턴 : 객체 생성에 관련된..

[도서/스프링 입문] #5 객체 지향 설계 5원칙 - SOLID

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 객체 지향 설계 5원칙 SOLID는 응집도는 높이고(High Cohesion), 결합도는 낮추라(Low Coupling)는 고전 원칙을 객체 지향의 관점에서 재정립한 것으로 유지보수성을 극대화해주는 원칙이다. 응집도 : 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로, 응집도가 높은 모듈은 하나의 책임에 집중하고, 독립성이 높아져 재사용이나 기능의 수정, 유지보수가 용이 응집도가 높으면 변경 대상과 범위가 명확해짐 결합도 : 모듈간의 상호 의존 정도로서 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용성이나 수정, 유지보수가 용이 결합도가 낮으면 검토해야 되는 소스의..

[도서/스프링 입문] #4 자바가 확장한 객체 지향

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. abstract 키워드 - 추상 메소드와 추상 클래스 추상 메소드는 선언부는 있는데 구현부가 없는 메소드를 의미하고, 추상 메소드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스로 선언해야 한다. 추상 클래스는 인스턴스를 만들 수 없고, 하위 클래스에게 메소드 오버라이딩을 강제한다. 생성자 생성자를 따로 만들어주지 않으면 자바에서 인자가 없는 기본 생성자를 자동으로 만들어 준다. 인자가 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어 주지 않는다. 클래스 생성 시의 실행 블록, static 블록 static 블록은 클래스가 스태틱 영역에 배치될 때 실행되는 코드 블록으로 한번만 ..

[도서/스프링 입문] #3 자바와 객체 지향

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 객체 지향은 인간 지향이다 객체 지향은 사람이 주변에서 사물을 인지 하는 방식대로 프로그래밍하기 위해 탄생한 개념이다. 객체 지향의 4대 특성 - 캡! 상추다 캡슐화(Encapsulation) : 정보 은닉 (information hiding) 상속(Inheritance) : 재사용 추상화(Abstraction) : 모델링 다형성(Polymorphism) : 사용 편의 클래스 vs. 객체 클래스는 같은 속성과 기능을 가진 객체를 총칭하는 집합의 개념이고, 객체는 세상에 존재하는 유일무이한 사물을 의미하고 객체는 클래스의 인스턴스라는 표현을 사용한다. 추상화 : 모델링 추상화는 모델링이다 객체 ..

[도서/스프링 입문] #2 자바와 절차적/구조적 프로그래밍

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 자바 프로그램의 개발과 구동 JVM(Java Virtual Machine) 자바 가상기계로 가상의 컴퓨터 JRE(Java Runtime Environment) 자바 실행 환경으로 가상의 컴퓨터를 제어하는 운영체제 자바 프로그램 실행기인 java.exe와 JVM을 포함 JDK(Java Development Kit) 자바 개발 도구로 라이브러리 등에 해당 자바 소스 컴파일러 javac.exe와 JRE를 포함 코드 실행 영역와 데이터 저장 영역으로 분리되는데, 객체 지향에서 데이터 저장 영역은 Static, Stack, Heap 영역으로 나누어서 사용한다. 자바에 존재하는 절차적/구조적 프로그래밍의..

[도서/스프링 입문] #1 사람을 사랑한 기술

✔️ 이 글은 [스프링 입문을 위한 자바 객체 지향의 원리와 이해 - 김종민] 도서를 바탕으로 정리한 글입니다. 신기술은 이전 기술의 어깨를 딛고 스프링을 이해 하기 전 필요한 개념 SOA(서비스 지향 아키텍처) CBD(컴포넌트 기반 개발) OOP(객체 지향 프로그램) 절차적/구조적 프로그래밍 기계어나 어셈블리어 기계어에서 객체 지향 프로그래밍 언어로 어셈블리어 - 0과 1의 행진을 벗어나 인간 지향으로 / 기계어 니모닉 어셈블리 : 니모닉(Mnemonic)과 기계어의 일대일 매칭 코드표 어셈블리어(Assembly Language) : 니모닉과 기계어의 일대일 매칭 언어, CPU 별로 각자의 어셈블리어가 달랐음 어셈블러(Assembler) : 어셈블리어를 기계어로 번역해주는 소프트웨어 니모닉(Mnemon..

[도서/자바의 신] #33 Java 8에서 변경된 것들은?

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. Lambda 표현식(expression) Java8부터 추가된 람다 표현식은 익명클래스의 가독성이 떨어진다는 단점을 보완하기 위해 만들어졌다. 대신 람다 표현식은 인터페이스에 메소드가 "하나"인 것들에만 적용이 가능하다. 람다 표현식은 익명 클래스로 전환이 가능하며, 익명 클래스는 람다 표현식으로 전환이 가능하다. 메소드가 하나인 인터페이스에는 대표적으로 Runnable, Comparator, FileFilter 등이 있다. 사용자가 구현한 인터페이스에서도 람다 표현식을 사용할 수 있다. 람다 표현식 매개 변수 목록 화살표 토큰(Arrow Token) 처리 식 (int x, int y) -> x+y 예제 interface Cal..

[도서/자바의 신] #32 Java 8에 추가된 것들은?

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. Optional Optional은 null인 객체를 편리하게 처리하기 위해서 만든 클래스로 java.util 패키지에 속해있다. Optional 클래스 선언부 public final class Optional extends Object final로 선언되어 있어 추가적인 확장이 불가능하다. Optional 객체 생성 방법 Optional.empty() : 데이터가 없는 객체를 생성 Optional.ofNullable() : null이 추가될 수 있는 객체를 생성 Optional.of() : 반드시 데이터가 들어가는 객체를 생성 Optional 객체가 비어있는지 확인하는 메소드는 isEmpty()가 아닌 isPresent()다. ..

[도서/자바의 신] #31 Java 7에 추가된 것들에는?

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. Fork/Join은 CPU를 더 쉽게, 효율적으로 사용하기 위해서 만들어진 거에요 Java 7에서 추가된 클래스 중에는 Fork/Join과 관련된 클래스들이 존재한다. Fork/Join은 어떤 계산 작업을 할 때 여러 개로 나누어(Fork) 계산한 후 결과를 모으는 작업(Join)을 의미한다. Fork/Join에는 Work stealing이라는 개념이 있다. 여러개의 Dequeue가 있을 때 하나의 Dequeue는 바쁘고, 다른 Dequeue는 한가하다면 한가한 Dequeue가 바쁜 Dequeue의 일을 가져가서 해주는 것을 Working stealing이라 한다. Fork/Join을 사용하면 별도로 구현해주지 않아도 라이브러리..

728x90