목차
1. Use Case Analysis에 따른 구현 결과 화면
2. 토의 - 문제점
3. 소스
2. 토의 - 문제점
3. 소스
본문내용
MAILBOX_COUNT = 3;
}
Mailbox.java
/**
A mailbox contains messages that can be listed, kept or discarded.
/**
mailbox 클래스를 정의한다.
mailbox는 메세지를 포함한다.
*/
public class Mailbox
{
/**
Mailbox 객체를 생성한다.
*/
public Mailbox()
{
newMessages = new MessageQueue();
keptMessages = new MessageQueue();
}
/**
number를 큐에 넣는다.
이 number는 어떤 폰에서 메세지가 왔는지를 나타내 준다.
*/
public void addMessage(Message aMessage)
{
newMessages.add(aMessage);
}
public void addSendMessage(Message aMessage)
{
keptMessages.add(aMessage);
}
/**
현재 최근 메세지를 가르쳐 준다.
*/
public Message getCurrentMessage()
{
if (newMessages.size() > 0)
return newMessages.getFirst();
else
return null;
}
public Message getKeptMessage()
{
if (keptMessages.size() > 0)
return keptMessages.getFirst();
else
return null;
}
/**
mailbox에 있는 메세지를 삭제한다.
삭제된 메세지를 return해 준다.
*/
public Message removeCurrentMessage()
{
if (newMessages.size() > 0)
return newMessages.removeFirst();
else if (keptMessages.size() > 0)
return keptMessages.removeFirst();
else
return null;
}
/**
현재 메세지를 저장한다.
*/
public void saveCurrentMessage()
{
Message m = getCurrentMessage();
if (m != null)
keptMessages.add(m);
}
private MessageQueue newMessages;
private MessageQueue keptMessages;
}
Message.java
/**
메세지 클래스를 정의한다.
*/
public class Message
{
/**
Message라는 객체를 생성한다.
text는 메세지를 저장하고, number는 폰의 종류를 나타낸다.
*/
public Message(String messageText, int messagePhone)
{
text = messageText;
number = messagePhone;
}
/**
text를 받아서 돌려준다.
*/
public String getText()
{
return text;
}
/**
폰의 종류를 돌려준다.
*/
public int getNumber()
{
return number;
}
private String text;
private int number;
}
MessageQueue.java
import java.util.ArrayList;
/**
메세지 큐 클래스를 정의한다.
각 메세지들이 저장 될 공간을 설정하는 것이다.
*/
public class MessageQueue
{
/**
ArrayList로 메세지 큐를 하나 생성한다.
*/
public MessageQueue()
{
queue = new ArrayList();
}
/**
큐의 가장 위 요소를 제거하고, 그 메세지를 return해 준다.
*/
public Message removeFirst()
{
return (Message) queue.remove(0);
}
/**
큐의 가장 뒤에 메세지를 하나 추가한다.
*/
public void add(Message newMessage)
{
queue.add(newMessage);
}
/**
메세지 큐에 있는 원소들의 갯수를 돌려준다.
*/
public int size()
{
return queue.size();
}
/**
가장 앞에 있는 메세지를 return해 준다.
*/
public Message getFirst()
{
return (Message) queue.get(0);
}
private ArrayList queue;
}
Telephone.java
import java.io.BufferedReader;
import java.io.IOException;
/**
Telephone 클래스는 키보드의 누름에 따른 동작과 그에 따른
폰의 행위에 대하여 정의한다.
*/
public class Telephone
{
/**
phone 객체를 생성한다.
*/
public Telephone(BufferedReader aReader)
{
reader = aReader;
}
/**
메세지를 화면에 출력한다.
*/
public void speak(String output)
{
System.out.println(output);
}
/**
무한루프를 돌면서 어느 곳에서나 키의 입력이 먹히도록 한다.
c는 현재 connection상태에 있음을 의미한다.
*/
public void run(Connection c) throws IOException
{
boolean more = true;
while (more)
{
String input = reader.readLine();
if (input == null) return;
if (input.equalsIgnoreCase("H"))
c.hangup();
else if (input.equalsIgnoreCase("Q"))
more = false;
else if (input.length() == 1
&& "1234567890*#MFCUD".indexOf(input) >= 0)
c.dial(input);
else
c.record(input);
}
}
private BufferedReader reader;
}
}
Mailbox.java
/**
A mailbox contains messages that can be listed, kept or discarded.
/**
mailbox 클래스를 정의한다.
mailbox는 메세지를 포함한다.
*/
public class Mailbox
{
/**
Mailbox 객체를 생성한다.
*/
public Mailbox()
{
newMessages = new MessageQueue();
keptMessages = new MessageQueue();
}
/**
number를 큐에 넣는다.
이 number는 어떤 폰에서 메세지가 왔는지를 나타내 준다.
*/
public void addMessage(Message aMessage)
{
newMessages.add(aMessage);
}
public void addSendMessage(Message aMessage)
{
keptMessages.add(aMessage);
}
/**
현재 최근 메세지를 가르쳐 준다.
*/
public Message getCurrentMessage()
{
if (newMessages.size() > 0)
return newMessages.getFirst();
else
return null;
}
public Message getKeptMessage()
{
if (keptMessages.size() > 0)
return keptMessages.getFirst();
else
return null;
}
/**
mailbox에 있는 메세지를 삭제한다.
삭제된 메세지를 return해 준다.
*/
public Message removeCurrentMessage()
{
if (newMessages.size() > 0)
return newMessages.removeFirst();
else if (keptMessages.size() > 0)
return keptMessages.removeFirst();
else
return null;
}
/**
현재 메세지를 저장한다.
*/
public void saveCurrentMessage()
{
Message m = getCurrentMessage();
if (m != null)
keptMessages.add(m);
}
private MessageQueue newMessages;
private MessageQueue keptMessages;
}
Message.java
/**
메세지 클래스를 정의한다.
*/
public class Message
{
/**
Message라는 객체를 생성한다.
text는 메세지를 저장하고, number는 폰의 종류를 나타낸다.
*/
public Message(String messageText, int messagePhone)
{
text = messageText;
number = messagePhone;
}
/**
text를 받아서 돌려준다.
*/
public String getText()
{
return text;
}
/**
폰의 종류를 돌려준다.
*/
public int getNumber()
{
return number;
}
private String text;
private int number;
}
MessageQueue.java
import java.util.ArrayList;
/**
메세지 큐 클래스를 정의한다.
각 메세지들이 저장 될 공간을 설정하는 것이다.
*/
public class MessageQueue
{
/**
ArrayList로 메세지 큐를 하나 생성한다.
*/
public MessageQueue()
{
queue = new ArrayList();
}
/**
큐의 가장 위 요소를 제거하고, 그 메세지를 return해 준다.
*/
public Message removeFirst()
{
return (Message) queue.remove(0);
}
/**
큐의 가장 뒤에 메세지를 하나 추가한다.
*/
public void add(Message newMessage)
{
queue.add(newMessage);
}
/**
메세지 큐에 있는 원소들의 갯수를 돌려준다.
*/
public int size()
{
return queue.size();
}
/**
가장 앞에 있는 메세지를 return해 준다.
*/
public Message getFirst()
{
return (Message) queue.get(0);
}
private ArrayList queue;
}
Telephone.java
import java.io.BufferedReader;
import java.io.IOException;
/**
Telephone 클래스는 키보드의 누름에 따른 동작과 그에 따른
폰의 행위에 대하여 정의한다.
*/
public class Telephone
{
/**
phone 객체를 생성한다.
*/
public Telephone(BufferedReader aReader)
{
reader = aReader;
}
/**
메세지를 화면에 출력한다.
*/
public void speak(String output)
{
System.out.println(output);
}
/**
무한루프를 돌면서 어느 곳에서나 키의 입력이 먹히도록 한다.
c는 현재 connection상태에 있음을 의미한다.
*/
public void run(Connection c) throws IOException
{
boolean more = true;
while (more)
{
String input = reader.readLine();
if (input == null) return;
if (input.equalsIgnoreCase("H"))
c.hangup();
else if (input.equalsIgnoreCase("Q"))
more = false;
else if (input.length() == 1
&& "1234567890*#MFCUD".indexOf(input) >= 0)
c.dial(input);
else
c.record(input);
}
}
private BufferedReader reader;
}
소개글