분류 전체보기 135

[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) - 솔리드 : 이 밤의 끝을 잡고..

[enum] enum - Class 로 사용하기

학습목표 : enum 의 개념을 이해하고, 단순 예제로 설명을 할 수 있다. | enum (enumerated type, enumeration) - 연관된 상수들의 집합 일반배열과는 어떻게 다르지?? - 일반배열은 그 배열의 값이 변수로 변형이 가능하다. - enum 은 상수들의 집합으로 변형이 되지 않는다. 1. 첫번째 예제. - 성별을 넣는 프로그램 - 남자, 여자를 선택하도록 한다. - 하지만, gender1 변수는 남자,여자 외에 다른 값도 들어갈 수 있다. package self._enum.youtube2; public class EnumExam { public static final String MALE="MALE"; public static final String FEMALE="FEMALE"..

Java/enum 2021.05.13

[instanceof] 나는 어디 소속인가?

학습목표 : instanceof 의 개념일 이해하고, 예제를 통해 이해할 수 있다. 개념 : 생성된 객체가 어느 클래스에 속해있는지를 확인하는 연산자이다. 특히, Interface 를 통해 객체를 생성할때, 어느 구현체의 것인지 확인 할 때 유용하게 사용 가능하다. SampleMain.java package book.oopforsprings.lec04._instanceof; public class SampleMain { public static void main(String[] args) { Bird bird = new Bird(); Bird eagle = new Eagle(); Sparrow sparrow = new Sparrow(); IfFly ifFly = new Eagle(); // Class T..

Java 2021.05.12

[Team Study] [Annotation] 자바 어노테이션에 대해 알아보자

학습목표 : 자바 어노테이션을 이해하고 그 종류에 대해 공부한다. 사전적 의미 annotation : 주석(을 달다) | an + notation : 하나의 표기법 ※ Java Tutorials : https://docs.oracle.com/javase/tutorial/java/annotations/index.html Annotations, a form of metadata, provide data about a program that is not part of the program itself. Annotations have no direct effect on the operation of the code they annotate. Annotations have a number of uses, amon..

Java 2021.05.12

final 키워드에 대한 고찰

학습목표 : final 키워드에서 주의할 점을 알아본다. final 은 최종이다. 클래스, 변수, 메소드에서 여기가 마지막이라는 표시를 해준다. 아래 예시를 통해 익혀보자. 1. final Class - 최종 Class 로 final 은 상속을 허락하지 않겠다는 의미이다. - 요즘말로, 딩크족이다. 아이를 낳지 않겠다니.. public final class Cat_Super { } // 상속을 허용하지 않아서 오류 발생 class Cat_Child extends Cat_Super { } 2. final 변수 = 상수 - 변경 불가능한 변수 즉 상수가 된다. - 단, 초기화 되지 않은 상수의 값은 static, 지역변수를 구분하여 초기화가 가능 package book.oopforsprings.lec04._..

Java 2021.05.11

[컴퓨터 CPU] CPU, Core, Thread

점심에 직원들과 CPU / Core 에 대한 이야기를 하다가 궁금하여 정리해봄 CPU(영어: central processing unit)는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행하고 처리하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩을 말한다 (위키피디아) CPU 1 개는 프로세스 1개의 작업량을 가진다. 즉 1 Cpu 는 1 Process , 1CPU = 1Process 클럭 - 클럭은 CPU 의 성능을 나타내는 지표로 실제 CPU 의 Spec 을 결정함. 1 Hz = 1초에 한번 작동 1 KHz = 1초에 1천번 1 MHz = 1초에 백만번 1 GHz = 1초에 10억번 그렇다면, CPU 는 클럭을 지속적으로 높여서 성능을 향상하면 되는데 왜? 그러지 못하는걸까?? -> ..

Tips or 잡담 2021.05.11

객체지향(OOP) 4대 특성

학습목표 : 객체지향의 4대 특성을 이해할 수 있다. * 4대 특성 - 추상화(Abstraction) - 모델링 - 상속(Inheritance) - 재사용 - 다형성(Polymorphism) - 사용편의 - 캡슐화(Encapsulation) - 정보은닉 OOP 4대 특성중 첫번째로 이해해야 하는것은 추상화이다. 추상화를 이해하면 상속, 다형성도 그 안에 포함되어 있는 특성임을 이해할 수 있다. 참고서적 : 스프링 입문을 위한 자바 객체지향의 원리와 이해 (위키북스)

객체지향 (OOP) 2021.05.10