자바 8

[DIP] 객체지향 설계 5 원칙 (5)

학습목표 : 의존관계 역전 원칙 (Dependency inversion principle)을 이해하고, 예제로 설명할 수 있다. DIP [Dependency inversion principle] 의존 역전 원칙 "고차원 모듈은 저차원 모듈에 의존하면 안된다. 이 두 모듈 모두 다른 추상화된 것에 의존해야 한다." "추상화된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다." "자주 변경되는 구체(Concrete) 클래스에 의존하지 마라" - 로버트 C.마틴 [위키피디아] DIP [Dependency inversion principle] 의존 역전 원칙 객체 지향 프로그래밍에서 의존관계 역전 원칙은 소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다. 이 원칙을 따르면, 상..

[LSP] 객체지향 설계 5 원칙 (3)

학습목표 : 리스코프 치환 원칙 (Liskov substitution principle)을 이해하고, 예제로 설명할 수 있다. LSP[Liskov substitution principle] 리스코프 치환 원칙 - "서브 타입은 언제나 자신의 기반 타입(base type)으로 교체할 수 있어야 한다." - 로버트 C. 마틴 - 하위 클래스 is a kind of 상위 클래스 - 하위 분류는 상위 분류의 한 종류다. - 구현 클래스 is able to 인터페이스 - 구현 분류는 인터페이스할 수 있어야 한다. 바바라 리스코프 컴퓨터 프로그램에서 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야 ..

[OCP] 객체지향 설계 5 원칙 (2)

학습목표 : OCP[Open/Closed principle] 개방-폐쇄 원칙을 이해하고, 예제로 설명할 수 있다. OCP[Open/Closed principle] 개방-폐쇄 원칙 - 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. - "소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 한다" - 로버트 C. 마틴 "자신의 확장에는 열려 있고, 주변의 변화(수정)에 대해서는 닫혀 있어야 한다" 위키북스 헷갈리지 말기 - 개방-폐쇄 원칙은 두가지의 개념이 아니라 동전의 양면처럼, 하나의 개념이 개방과 폐쇄를 가지고 있다는 의미이다. 예를들어 설명하기 첫번째, JAVA 프로그램은 어떤 운영체제에서도 JVM 을 통해 동일하게 실행된..

[SRP] 객체지향 설계 5 원칙 (1)

학습목표 : SRP[Single responsibility principle] 단일 책임 원칙 을 이해하고, 예제로 설명할 수 있다. SRP[Single responsibility principle] 단일 책임 원칙 - 한 클래스는 하나의 책임만 가져야 한다. - 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다" - 로버트 C. 마틴 1. 그림 설명 예제) 못된 예제 public class NoSrp남자 { String myName ="남자"; void 효도하기() { System.out.println("엄마에게 효도"); } void 기념일챙기기() { System.out.println("아내에게 기념일 챙기기"); } void 용돈주기() { System.out.println("아이들에게 ..

객체지향 설계 5원칙

학습목표 : 객체지향 설계 5원칙에 대한 냄새를 맡을 수 있다. 학습이유 : 자바는 기본적으로 객체지향(OOP)을 지향하는 프로그램 언어이며, 프로그램 패키지의 클래스 구조가 객체지향으로 만들어지고 있다. 또한, 웹에서 사용하는 스프링 프레임워크도 객체지향을 지향하며 만들어졌으며, 계속하여 만들어지고 있다. 지금도 자바 나 스프링은 객체지향 기반에서 지속적으로 프로그램 언어를 향상 시킬거라는건 쉽게 예상할 수 있다. 따라서, 자바를 통해 프로그램을 구현하고자 한다면, 객체지향의 4대 특성과 설계 5원칙을 공부하는 것은 자바라는 언어를 이용해 프로그램을 만드는데 매우 유용할거라 생각해 본다. 객체지향 설계 5원칙 : SOLID (SRP, OCP, LSP, ISP, DIP) - 솔리드 : 이 밤의 끝을 잡고..

2. 프로젝트 생성, Hello world 까지

학습목표 : STS툴을 이용하여 maven 프로젝트를 생성하고, Hello world 까지 실행한다. # 참고로 2단계에서는 Spring boot 를 이용하고, maven 을 사용한다. # 스프링 부트를 시작하기 위해서는 보통 각 개발툴(InteliJ, Eclipse)을 이용하거나 start.spring.io 사이트를 사용하는 방법이 있는데, 여기서는 이클립스를 사용하기 때문에 이클립스에서 프로젝트를 만드는 방법을 사용한다. 프로젝트 생성 1. 이클립스 STS4 실행 New -> Spring Starter Project -> 아래 참고 하여 생성 위 내용을 마치고, finish 를 누르면 바로 시작되지 않고, 프로젝트 생성을 위해 약간의 시간이 필요 위에서 선택한 maven 이 필요로 하는 라이브러리들을..

[Interface & Extends] 이 둘의 단순하지만 OOP적인 Collaboration

학습목표 : 인터페이스와 상속의 조화로운 모습을 이해한다. * 내용은 단순하기 때문에 클래스 구조와 소스를 직접 실행해보면 상속과 인터페이스를 별개로 생각하기 보다는 서로 연결되는 부분이 있다는 점을 생각할 수 있습니다. 클래스 구조 2. 소스코드 package book.oopforsprings.lec03.ver04_interface_plus_extends; /* * The collaboration of Interface and Extends */ public class Interface_plus_Extends { public static void main(String[] args) { IfFly bat = new Bat(); bat.fly(); IfFly sparrow = new Sparrow(); s..

Java 2021.05.06

Java Application - 싱글톤 패턴(Singleton pattern)

학습목표 - 1. OOP 에서 싱글톤의 개념을 정의하고 이해한다. - 2. 이해한 개념을 Java 코드로 구현할 수 있다. * 참고 - 구글 검색, 구글 이미지, 유투브 : www.youtube.com/watch?v=5jgpu9-ywtY youngjinmo.github.io/2020/04/java-memory/ 1. 싱글톤 이해하기 - 싱글톤은 클래스를 객체화 할때, 첫번째 인스턴스가 메모리에 정적으로 할당되어 해당 메모리 위치를 모든 동일한 인스턴스가 참조하여 사용하도록 함 2. Java coding # 일반 클래스 생성 package singleton.ver1; public class NaSingleClassNo { private static String strName; public NaSingleC..

객체지향 (OOP) 2021.04.29