Contents
- 1. ë�°ë¸”ìŠ¤ìº í”„2004/금요ì�¼
- 2. 여는 �야기
- 3. 실습 : Programming
- 4. Code Review - 어떤 ��� 하며 작성했나요?
- 5. 휴�
- 6. Structured Programming 소개
- 7. HIPO ì˜ˆì œ
- 8. Paper Programming : HIPO 그리기
- 9. ìž�ì‹ ì�´ HIPO 그린 것ì�„ 근거로 구현
- 10. 휴�
- 11. OOP 소개
- 12. 시연 : CRC Card
- 13. OOP Demo 1 : Message 를 ë‚ ë¦½ì‹œë‹¤~ (Python)
- 14. OOP Demo 2 : Message 를 ë‚ ë¦½ì‹œë‹¤~ (Java & Eclipse)
- 15. 휴�
- 16. �바 간단 설명
- 17. 휴�
- 18. interface 개� 추가 설명
- 19. 구현 : 다른 �체와� 대화 & 기능� 변화
- 20. í† ë¡ & 발표
- 21. 마무리
- 22. 기타
1.1.1. ìž�ë°”ì�˜ ì—사 ë°� 특징 ¶
설마 ì�´ê±° PT하셨나요? PTì�˜ ë‚´ìš©ì�´ ì œ 뒤통수를 때리는것 같군요.
ìž�ë°” ì�´ë¦„ì�˜ ìœ ëž˜ ë°� 개발 ì—사
ìž�ë°” ì�´ë¦„ì�˜ ìœ ëž˜ ë°� 개발 ì—사
ì—�서는 ìœ ëž˜ê°€ 없군요. C기반ì�´ 아니ë�¼, C++(문법), Smalltalk(vm) ì�˜ ì² í•™ì�„ ë°˜ì˜�합니다. Early History 는 마치 ì œìž„ìŠ¤ ê³ ìŠ¬ë§�ì�´ 처ì�Œ ë§Œë“ ê²ƒ 처럼 ë�˜ì–´ 있군요. (SeeAlso Java Early history
개발 ì—사는 사장 ì§�ì „ì�˜ Java를 구한 Servlet-JSP ê¸°ìˆ ì�´ ë¹ ì¡Œê³ , 2001ë…„ 기준ì�˜ 'JavaTM 2 Playtform 1.3,'는 현재 J2SE 로 ì�´ë¦„ì�„ 바꾸었지요. 1.4는 1ë…„ë�„ ì „ì—� ë‚˜ì˜¤ê³ , 1.5 ê°€ 8ì›”ì—� 발표ë�©ë‹ˆë‹¤. Java는 major upgrade 시 ë§Žì�€ 부분ì�´ 변경ë�©ë‹ˆë‹¤
Javaì�˜ 활용분야개발 ì—사는 사장 ì§�ì „ì�˜ Java를 구한 Servlet-JSP ê¸°ìˆ ì�´ ë¹ ì¡Œê³ , 2001ë…„ 기준ì�˜ 'JavaTM 2 Playtform 1.3,'는 현재 J2SE 로 ì�´ë¦„ì�„ 바꾸었지요. 1.4는 1ë…„ë�„ ì „ì—� ë‚˜ì˜¤ê³ , 1.5 ê°€ 8ì›”ì—� 발표ë�©ë‹ˆë‹¤. Java는 major upgrade 시 ë§Žì�€ 부분ì�´ 변경ë�©ë‹ˆë‹¤
는 ë�” 슬í�¼ì§‘니다. ë³´ì—¬ì£¼ì‹ ì²˜ì�Œ ì˜ˆì œê°€ ê±°ì�˜ë‹¤ ActiveX 구현물입니다.êµë‚´ Rich Client 분야는 ì „ë¶€ ActiveXì—� ì£¼ê³ í•´ì™¸ëŠ” Flashì—�게 내주었습니다. 현재(2003) Javaì�˜ 활용분야ì�˜ 80% ì�´ìƒ�ì�€ appletì�´ 아닌 서버 í”„ë ˆìž„ì›�ì�˜ J2EE와 모바ì�¼ í”„ë ˆìž„ì›�ì�˜ J2ME 입니다.
--NeoCoinì±…ì�„ ë³´ê³ í–ˆëŠ”ë�° ë¬¸ì œê°€ 많았나 봅니다; 미숙한 발표여서 죄송합니다 (__) --iruril
ì €ëŠ” 발표를 못ë´�서, 미숙한지 모릅니다. 그러나 PTê°€ 그대로 ì§„í–‰ë�˜ì—ˆë‹¤ë©´, 사실과 다른 ë‚´ìš©ì�€ 충격ì �ì�´êµ°ìš”. 다ì�Œë¶€í„°ë�¼ë�„ 반드시 타ì�¸ì—�게 ê°�수를 받거나, ìž�ì‹ ì—�게 ë‚©ë“�í• ìˆ˜ 있는 ë‚´ìš©ì�„ 담으세요. --NeoCoin
1.1.2.4. 간단한 ì˜ˆì œí”„ë¡œê·¸ëž¨ 작성 ë°� 테스트 ¶
- 테스트 프로그램(FirstJava.java)
~cpp public class FirstJava { public static void main(String argv[]) { System.out.println("Hello world!"); } }
1.1.3. 윈ë�„ìš° í”„ë ˆìž„ì°½ ë�„우기 ¶
- JFrameì�˜ show() 메소드 -> í”„ë ˆìž„ì°½ì�„ ë³´ì�´ê²Œ 한다.
- JFrame� setBounds(int x, int y, int weight, int height) 메소드
-> int ì „ë‹¬ì�¸ìž�ê°€ 순서대로 ì°½ì�„ ë�„우는 'x좌표', 'y좌표', '창넓ì�´', '창높ì�´' 를 가리킨다
~cpp
import javax.swing.*;
public class FirstJava extends JFrame{
public FirstJava()
{
}
public static void main(String args[]) {
FirstJava helloWorld = new FirstJava();
helloWorld.setBounds(100,100,800,600);
helloWorld.show();
}
}
~cpp
package WindowFrame;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.JFrame;
public class WindowFrame {
static BufferedReader breader;
public WindowFrame(String title, int width, int height) {
JFrame f = new JFrame(title);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(width, height);
f.show();
}
public static int inputInt() throws IOException {
breader
= new BufferedReader(new InputStreamReader(System.in));
return Integer.parseInt(breader.readLine());
}
public static String inputString() throws IOException {
return breader.readLine();
}
public static void main(String[] args) {
breader = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("윈�우 �름 : ");
String title = inputString();
System.out.print("넓� : ");
int w = inputInt();
System.out.print("높� : ");
int h = inputInt();
new WindowFrame(title, w, h);
} catch(IOException ex) {
ex.printStackTrace();
}
}
}

1.1.4. 그림그리기 ¶
- java.awt.Graphics 추가
- public void paint(Graphics g) 메소드
-> 윈�우 창�서 그리는 부분� 담당하는 함수�다.
- g.drawString(String string, int s, int y) 메소드
-> int ì „ë‹¬ì�¸ìž�ê°€ 순서대로 문ìž�ì—´ì�„ 그리는 '왼쪽 위 ì �ì�˜ x좌표', '왼쪽 위 ì �ì�˜y좌표' 를 가리킨다
- g.drawLine(int startX, int startY, int endX, int endY) 메소드
-> int ì „ë‹¬ì�¸ìž�ê°€ 순서대로 ì„ ì�„ 리는 '처ì�Œì �ì�˜ x좌표', '처ì�Œ ì �ì�˜y좌표', 'ë��ì �ì�˜ x좌표', 'ë��ì �ì�˜ y좌표' 를 가리킨다
- g.drawOval(int x, int y, int weight, int height) 메소드
-> int ì „ë‹¬ì�¸ìž�ê°€ 순서대로 ì›� 그리는 '왼쪽위 x좌표', '왼쪽위 y좌표', 'ì›�ì�˜ 너비', 'ì›�ì�˜ 높ì�´' 를 가리킨다
- g.fillOval(int x, int y, int weight, int height) 메소드
-> int ì „ë‹¬ì�¸ìž�ê°€ 순서대로 채워진 ì›�ì�„ 그리는 '왼쪽위 x좌표', '왼쪽위 y좌표', 'ì›�ì�˜ 너비', 'ì›�ì�˜ 높ì�´' 를 가리킨다
~cpp
import java.awt.Graphics;
import javax.swing.*;
public class FirstJava extends JFrame{
public FirstJava()
{
}
public static void main(String args[]) {
FirstJava helloWorld = new FirstJava();
helloWorld.setBounds(100,100,800,600);
helloWorld.show();
}
public void paint(Graphics g)
{
g.drawLine(100,100,300,300);
g.drawOval(200,200,400,400);
g.fillOval(500,500,100,100);
}
}
1.1.5. 마우스 ì�´ë²¤íЏ ¶
- addMouseListener 로 마우스 핸들러를 추가한다.
- mouseClicked 메소드 -> 메우스를 í�´ë¦í–ˆì�„ 경우 ìž‘ë�™
~cpp import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.*; public class FirstJava extends JFrame{ public FirstJava() { addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int x = e.getX(); int y = e.getY(); System.out.println("x 좌표 : " + x); System.out.println("y 좌표 : " + y); } }); } public static void main(String args[]) { FirstJava helloWorld = new FirstJava(); helloWorld.setBounds(100,100,800,600); helloWorld.show(); } }
1.1.6.1. 마우스를 í�´ë¦í–ˆì�„ 경우 paint 함수를 호출 ¶
- repaint() 메소드를 사용
~cpp
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
public class FirstJava extends JFrame{
public FirstJava()
{
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
repaint();
}
});
}
public static void main(String args[]) {
FirstJava helloWorld = new FirstJava();
helloWorld.setBounds(100,100,800,600);
helloWorld.show();
}
public void paint(Graphics g)
{
System.out.print("Click!! ");
}
}
3. 실습 : Programming ¶
~cpp 6 0 0 222244451 999 Output 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 5 0 0 22224444346 999 Output 2 1 1 1 1 1 0 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 3 0 0 44220064 999 Output 1 1 1 1 1 1 1 1 1
13. OOP Demo 1 : Message 를 ë‚ ë¦½ì‹œë‹¤~ (Python) ¶
ì••ì¶•ì�„ í’€ê³ , 해당 ë””ë ‰í† ë¦¬ì—� 들어간 ë’¤ c:\python23\python.exe 를 실행해주세요.
~cpp
from StarCraft import StarCraft
sc = StarCraft ()
dir(sc)
gateway = sc.createGateway ()
dir(gateway)
z1 = gateway.createZealot ()
dir(z1)
z1.move (160,160)
d1 = gateway.createDragoon ()
dir(d1)
d1.move (180,180)
z1.printHp()
z1.getPosition()
d1.printHp()
d1.getPosition()
z1.setAttackTarget(d1)
z1.printAttackTarget()
z1.getAttackTarget().printHp()
z1.getAttackTarget().getPosition()
z1.attack()
d1.printHp()
22. 기타 ¶
1002ì•„
--NeoCoin
id : cvs_writer
pass: zeropager
를 만들어 ë‘�었으니, 시간 남는 사람들ì�´ 있다면 서로서로 소스 ê³µìœ í•´ë³´ëŠ” 경험ë�„ 좋ì�„것 같다. ì�´ë ‡ê²Œ ê³µìœ ë�œë‹¤ ì�´ëŸ°ì‹� ë§�ì�´ì§€pass: zeropager
~cpp :pserver:cvs_writer@zeropage.org:/home/CVSí† ìš”ì�¼ê¹Œì§€ë§Œ ê°œì • ì‚´ë ¤ 둘께
--NeoCoin















