[NHN Academy]

    Collections Framework

    집합: 차집합, 교집합 구할 수 있고 중복된 값이 들어갈 수 있고, 키/밸류가 제공된다. 자바의 프레임워크는 크게 세종류가 있다. [리스트, 셋, 맵] Compare 정렬 import java.util.Collections; import java.util.List; import java.util.ArrayList; public class Test { public static void main(String[] args) { User user1 = new User(1, "User12",30); User user2 = new User(2, "User2",20); User user3 = new User(3, "User34",10); User user4 = new User(4, "User4",20); User u..

    책 추천

    https://www.aladin.co.kr/shop/UsedShop/wuseditemall.aspx?ItemId=2104376 [알라딘]Java 언어로 배우는 디자인 패턴 입문 www.aladin.co.kr https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=244299985 [전자책] 이펙티브 자바 자바 플랫폼 모범 사례 완벽 가이드 이펙티브 자바의 개정판. 3판에는 자바 7, 8, 9에서 자바 언어와 라이브러리에 추가된 특성들을 녹여냈다. 특히 그동안 객체 지향에 치중하던 자바에 새로 도 www.aladin.co.kr 운영체제 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=341595 운영체제론 운영체제론 www.a..

    제네릭스

    타입 추론 int i =0; var i2 = 0; 자바 8부터 익명 함수가 됨. var 키워드를 넣어서 var라고 선언하면 베리언트, 정의되지 않은 돌연변이가 가능한 변수를 선언할 수 있는 기능 런타임에 들어가는 값에 따라 vari2 = "hello"; 이런식으로 선언되면 런타임이 돌아가면서 자바가 익명함수를 추론해서 형변환해서 돌려줌?.. 커피 자판기 모델링 책임: 변경 메뉴, 결제 방법, 아이스+핫인데 티백도 추가(-> 뜨거운 커피를 선택하면 종이컵이 나오고 바로 뜨건물, 아이스는 플라스틱 컵이 나오고 얼음을 받고 커피, 티백은 뜨거운 컵에 티백이 나와야 함. ) 팩토리 메서드 패턴을 이용하는게 가장 좋은 방법 패턴을 문제에 맞춰야 함!!! 디자인 패턴은 탬플릿이기 때문에 적절하게 적용하면 됨 여기서..

    제네릭

    제네릭 배열으로 한번 해봐라. 자바에서는 안됨.. 왜 안되는지 연구해봐라. 공변성, 불공변성에 연관하여.. 오늘 과제 뱅크 어카운트 짠거 팩토리 메서드, 싱글턴까지 붙인거 제출하기

    디자인 패턴

    싱글턴 생성돼야 하는 싱글턴의 개수를 지정해줄 수 있음 싱글턴 명령성 제어 ? 에서도 유일성을 보장 받는 방법 인터프리터, 이터레이터, 비지터 꼭 해봐야한다.

    객체 프로그래밍 원칙

    분해와 추상화 분해(Decomposition) 분할과 정복 - 클래스를 만들 때 어떻게 추상화할 것인가? 서로 상호작용하는 작은 프로그램을 만드는 것. 각 하위 문제는 1. 동일한 세부 수준 2. 독립적으로 해결 가능 하위 문제의 솔루션을 결합하여 원래 문제를 해결할 수 있어야 함 추상화(Abstraction) (어떻게 생산적으로 분해하여 수행할 것인가?) 인터페이스 분리 원칙 분할을 하는 기준은 책임이다. 변화의 가능성을 두고 모델링 해야 한다. 하나의 인터페이스가 너무 많은 책임을 가지지 않게. ex) BankAccount 계좌 생성하는 부분, 프린트하는 부분 분리를 해야 하는데 범용 인터페이스가 있어서 여러 개의 메서드를 다 가지고 있다면, 뱅크 어카운트가 그 인터페이스를 구현하는 순간 그 동작을 ..

    객체지향 프로그래밍

    분해와 추상화 분해: 요구사항 파악. 어디서부터 어디까지 분해를 해야하냐 추상화: 불필요한 것을 빼고 내가 필요한 것만 집중하는 것. 더 간단한 문제로 만들어야 함. 문제를 중심으로 단일 문제가 될 때까지 최대한 쪼개서 모듈화하기. 좋은 추상화의 예: 은행. 분해가 잘 되어 있다. 요구사항에 맞춰 어떻게 분해를 해내느냐 - > 추상화 1. 파라미터에 의한 추상화 2. 명세에 의한 추상화 클래스는 모듈. 객체지향 디자인 원칙: SOLID http://www.yes24.com/Product/Goods/89649360 리팩터링 2판 - YES24 개발자가 선택한 프로그램 가치를 높이는 최고의 코드 관리 기술마틴 파울러의 『리팩터링』이 새롭게 돌아왔다.지난 20년간 전 세계 프로그래머에게 리팩터링의 교본이었던 ..

    생성자, 다형성

    생성자 class Date{ private int year, month, day; String dayOfWeek; boolean holiday; public int getYear(){ return this.year; } public int getMonth(){ return this.month; } public int getDay(){ return this.day; } public Date(int year, int month, int day){ this.year=year; this.month = month; this.day = day; } } Date date = new Date(1993,10,05); date.getDay(); 다형성 interface BinaryOp{ public int apply(in..

    AreaCalculation 도형의 넓이 구하기

    1. 원래 버전 interface IAreaCalculation{ //직사각형, 삼각형, 오각형을 위한 인터페이스 double AreaCalculation(double height, double width); } interface IAreaCalculationForSquare{ //정사각형을 위한 인터페이스 double AreaCalculation(double side); } class Rectangle implements IAreaCalculation{ private String type; //현재 어떤 도형의 넓이를 구하는지 구분해줄 String 변수 '타입' 선언 public void setType(String type){ this.type = type; } public String getType(..

    KeywordCount.java

    import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.HashMap; public class KeywordCount{ public static void main(String[] args){ HashMap keyword = new HashMap(); keyword.put("abstract", 0); keyword.put("assert", 0); keyword.put("boolean", 0); keyword.put("break", 0); keyword.put("byte", 0); keyword.put("case", 0); keyword.put("catch", 0); keyword.put("c..