프로그래밍 542

안드로이드 Toast 메시지에 내가 원하는 그림을 넣어보자

위는 file explore입니다. mina.jpg는 그림파일인데 안드로이드에서는 png나 jpg를 쓰는 것을 추천합니다. 저는 아래 사진을 썼습니다. 토스트메시지는 화면에 잠시 나타나는 메시지인데 디버깅할 때나 잠시 사용자에게 메시지를 보여줄 때 유용합니다. static Toast makeText(Context context, int resId, int duration) static Toast makeText)Context context, CharSequence text, int duration) 첫번째인자는 액티비티를 전달하므로 액티비티.this로 넘겨주면 되고 두번째인자는 메시지인데 String타입도 가능합니다. 세번째인자는 메시지의 지속시간인데 LENGTH_SHORT나 LENGTH_LONG 값중 ..

Enumeration 클래스와 ListIterator 클래스

ListIterator는 Iterator를 상속받아서 기능을 추가한 것, 양방향으로 이동이 가능. ArrayList나 LinkedList와 같이 List 인터페이스를 구현한 컬렉션만 사용가능. Enumeration는 Iterator의 구버젼격. 예제 첫번째 package kch; import java.util.ArrayList; import java.util.ListIterator; public class ListIteratorEx1 { public static void main(String[] args){ ArrayList list = new ArrayList();//리스트를 선언하고 list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.a..

디자인 패턴 Memento 패턴

Memento 패턴 이름 해설 Memento Gamer의 상태를 나타내는 클래스 Gamer 게임을 싱행하는 주인공의 클래스 Memento의 인스턴스를 만든다. Main 게임을 진행시키는 클래스 Memento의 인스턴스를 저장해두고 필요에 따라서 Gamer의 상태를 복원한다. Memento 클래스 package kch; import java.util.List; import java.util.ArrayList; public class Memento{ /** * @uml.property name="money" */ int money;//소지금 /** * @uml.property name="fruits" * @uml.associationEnd multiplicity="(0 -1)" elementType="jav..

디자인패턴 Observer 패턴

이름 해설 Observer 관찰자를 나타내는 인터페이스 NumberGenerator 수를 생성하는 오브젝트를 나타내는 클래스 RandomNumberGenerator 랜덤으로 수를 생성하는 클래스 DigitObserver 숫자로 수를 표시하는 클래스 GraphObserver 간이 그래프로 수를 표시하는 클래스 Main 동작 테스트용 클래스 Observer 인터페이스 package kch; public interface Observer { public abstract void update(NumberGenerator generator); } NumberGenerator 클래스 package kch; import java.util.ArrayList; import java.util.Iterator; public..

디자인패턴 Mediator 패턴

Mediator 패턴 아래 결과화면부터 보시는 것도 이해하는데 좋습니다. 이름 해설 Mediator ‘중개인’의 인터페이스를 결정하는 인터페이스 Colleague ‘회원’의 인터페이스를 결정하는 인터페이스 ColleagueButton Colleague 인터페이스를 구현 버튼을 나타냄 ColleagueTextField Colleague 인터페이스를 구현 텍스트입력을 나타냄 ColleagueCheckbox Colleague인터페이스를 구현 체크박스(라디오버튼)을 나타냄 LoginFrame Mediator 인터페이스를 구현, 로그인 다이얼로그를 나타내는 클래스 Main 동작 테스트용의 클래스 Mediator 인터페이스 package kch; public interface Mediator {//중개인 publi..

디자인패턴 Facade 패턴

Facade 패턴 Facade 는 창구라는 뜻입니다. 버스표를 구입할때 창구에 어디갈지 말하고 돈만 내면 됩니다. 직원이 컴퓨터로 예약하고 바코드를 읽고 돈계산 작업을 하는것은 창구 밖에서는 알지 못합니다. 이런식으로 밖에서 보이는 것은 단순하게하고 안에서는 1. 컴퓨터 예약작업, 2. 바코드 읽기 3. 돈 계산을 처리하고 결과만 고객에게 보여주는 역할을 하는 패턴입니다. 패키지 이름 해설 pagemaker Database 메일 주소에서 사용자 이름을 얻는 클래스 HtmlWriter HTML 파일을 작성하는 클래스 PageMaker 메일 주소에서 사용자의 웹페이지를 작성하는 클래스 Anonymous Main 동작 테스트용 클래스 Database 클래스 package kch; import java.io.F..

디자인 패턴 ProtoType패턴

Prototype패턴 인스턴스를 만들때 new연산자를 쓰는게 아니라 어떤 인스턴스로부터 인스턴스를 만드는 패턴입니다. framework패키지의 Product 클래스 package framework; public interface Product extends Cloneable{//Cloneable인터페이스를 상속받아야 clone메소드 사용 가능 public abstract void use(String s); public abstract Product createClone();//복사본을 만드는 메소드 } framework패키지의 Manage클래스 package framework; import java.util.HashMap; public class Manager { /** * @uml.property na..

디자인 패턴 singleton 패턴

singleton 패턴 어떤 클래스의 인스턴스가 반드시 1개만 존재하도록 하고싶을때 인스턴스가 1개밖에 존재하지 않을 것을 프로그램 상에서 표현하고 싶을 때 이 패턴을 씁니다. 코드를 보면서 분석해봅시다. public class Singleton { //클래스변수를 만들어서 딱 하나만 만들게 됩니다. private static Singleton singleton = new Singleton(); //아래와같이 생성자가 private로 두어서 메인에서 생성할 수 없게 합니다. private Singleton(){ System.out.println("인스턴스를 생성했습니다."); } //클래스 메소드로 딱 하나 만든 클래스변수를 반환하게 합니다. public static Singleton getInstanc..

디자인 패턴 Factory Method 패턴

Factory Method 패턴 인스턴스를 만드는 방법은 상위클래스 측에서 결정하지만 구체적인 클래스 이름까지는 결정하지않습니다. 구체적인 내용은 하위 클래스 측에서 수행합니다. 아래 소스를 보면 Factory 클래스는 제품을 구체적으로 어떻게 만드는지는 말하지않고 만들고 제품을 등록한다 이 정도만 정의를 하게됩니다. package framework; public abstract class Factory { //Template Method패턴을 사용함 Factory에서는 Product를 생산하고 public final Product create(String owner){ Product p = createProduct(owner); registerProduct(p); return p; } //아래는 하위클..

디자인 패턴 Template Method 패턴

Template Method패턴 상위클래스에서 어떤 처리의 뼈대를 결정하고 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴입니다. 어렵지않은 패턴이라서 아래 코드들을 분석해보면 쉽게 이해하실수 있을겁니다. public abstract class AbstractDisplay { //추상메소드 3개 public abstract void open(); public abstract void print(); public abstract void close(); //추상메소드를 이용해서 메소드를 구현해둠 //추상메소드는 자식 클래스에서 구체화 될 예정 public final void display(){ open(); for(int i=0; i < 5; i++){ print(); } close(); } } ..