본문 바로가기

Java

(30)
Day 7. 과제(JAVA IO) JAVA I/O(Input/Output) 기본적으로 데코레이터 패턴을 사용한다. 데코레이터 패턴이란 디자인 패턴의 한 종류이다. 객체의 결합을 통해 기능을 유연하게 확장 할 수 있게 해주는 패턴이라고 한다. 즉, 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에 각 추가 기능을 Decortor 클래스로 정의 한 후 필요한 Decorator 객체를 조합함으로서 추가 기능의 조합을 쉽게 설계하는 방식이다. 데코레이터 패턴을 쓸 때 주인공과 장식을 구별할 줄 알아야 한다. 자바 I/O 공부하기 전에 알아야 할 것1) 자바 IO는 데코레이터 패턴으로 구성된다.2) 표준입력 : System.in(키보드, InputStream), 표준출력 : System.out(모니터, PrintStream), 표준에러출력 ..
Day 7. 과제 즐거운 자바 15 ~ 18 강 15강 Object와 String 클래스 Object클래스의 기본 메소드에는 자주 쓰이는 대표 3가지 메소드(1.toString() 2.equals() 3.hashCode() ) 가 있다. 이들을 자주 쓰는 이유는 기준을 정하는 메소드 이기 때문이다. 같은지 다른지를 알기위해서는 기준이 필요하기 때문이다. 이들은 모든 클래스의 1대 조상인 Object의 메소드로서 Overriding을 해서 쓴다. 1.toString() 메소드는 말 그대로 객체가 가지고 있는 값을 문자열로 바꿔서 변환해준다.2.equals() 메소드는 같은 문자열인지 같은 값인지를 비교해주는 메소드이다. ==이 같은 객체를 참조하는지를 알려주는 것과 비슷하면서 다르다.3.hashCode() 메소드는 hash..
Day 6. Java 로또 프로그램(객체지향) Java 로또 프로그램(객체지향)이번에는 지난 수업에 List를 이용해서 짜보았던 로또 프로그램을 객체 지향적으로 다시 짜보았다. 시나리오는 LottoBall클래스에서 공을 하나씩 만들어주고, LottoMachine클래스에서 setLottoballs 매소드를 이용해서 가져와서 mix를 이용해서 섞어주고 getLottoballs를 이용해서 6개의 공을 가져오는 것이다. 바로 밑에 올리는 코드는 스스로 생각해 작성한 프로그램이다. package my.examples.javaexam.lotto; public class LottoBall { private int num; public LottoBall(int num){ this.num = num; } //getNumber(); -> getter메소드 //numb..
Day 6. file, folder 관계와 컴포시트 패턴 file, folder 관계와 컴포시트 패턴(Composite pattern)? 파일들을 모아놓은 디렉토리가 폴더다. 파일은 이름을 정하거나 수정할 수 있어야 하고, 크기를 입력받고 불러올 수 있어야한다. 폴더는 파일들을 추가하거나, 폴더 안에 폴더를 추가할 수 있다. 또 폴더의 크기를 불러오거나, 파일 삭제, 폴더 삭제 등의 기능이있다. 이렇게 파일과 폴더의 관계를 컴포시트 패턴(compostite pattern)이라고 한다. 단일 객체(Single Instance)든 객체들의 집합(Group of Instances)든 같은 방법으로 취급하는 것이다. 다시 말해, 객체들과 객체들 간의 집합 처리 방법의 차이가 없을 경우 사용하면 된다. 여기서 컴포시트의 의미는 일부 또는 그룹을 표현하는 객체들을 트리 ..
Day 5. Collection framework(자료구조) Collection framework(자료구조) Collection : 중복 O 순서 X Iterator : 꺼내는 인터페이스List : 중복 O 순서 OSet : 중복 X 순서 XMap : key, value 값 import java.util.HashSet; import java.util.Iterator; import java.util.Set; //단축키! import는 컴파일러한테 어디 패키지에 있는지 알려주는 것 java.lang은 import필요없다. public class CollectionTest01 { public static void main(String[] args){ Set set = new HashSet(); boolean flag = false; flag = set.add("hell..
Day 4. 과제 정적 멤버와 static? 정적(static)은 '고정된'이란 의미를 가지고 있다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 이들을 각각 정적 필드 , 정적 메소드라고 한다. 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다. 정적 필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스(바이트 코드)를 로딩해서 메소드 메모리 영역에 적재할 때 클래스 별로 관리된다. 따라서 클래스이 로딩이 끝나면 바로 사용할 수 있다. 필드를 선언할 때 인스턴스 필드로 선언할 것인가, 아니면 정적 필드로 선언할 것인가의 판단 기준은 객체마다 가지고 있어야 할 데이터라면 인스턴스 필드로 선언하고, 객체마다 ..
Day 4. 콜바이 레퍼런스 package my.examples.javaexam.practice; public class Box { private Item item; protected void add(Item item){ this.item = item; int tmp; tmp = item.x; this.item.x = item.y; this.item.y = tmp; } protected Item get(){ return item; } }package my.examples.javaexam.practice; public class Item { int x; int y; } package my.examples.javaexam.practice; public class Execute { public static void main(String[..
Day 4. 템플릿 메서드(Template Method) 패턴 템플릿 메서드(Template Method) 패턴?- 한꺼번에 구체 클래스를 표현하지 않고 추상 클래스의 메서드 패턴을 구현해 놓으면 구체 클래스가 상속받아 자신이 필요한 메서드들을 작성해주는 방식. 문방구의 모양자라고 생각해도 편하다. 흐름(로직)을 부모 클래스가 만들고, 자식 클래스에서 구현하는 방식을 말한다. 템플릿 메서드 예제.package my.examples.javaexam.my; public abstract class Action { //추상 메소드 : 메소드를 선언한다. // abstract 리턴타입 메소드명(파라미터들); void init(){ System.out.println("init");} protected abstract void service(); void destroy(){Sy..