More actions
데블스캠프2004/금요일
Eclipse : http://zeropage.org/~neocoin/eclipse3.0rc3/eclipse-SDK-3.0RC3-win32.zip JDK 1.5 : http://zeropage.org/~neocoin/eclipse3.0rc3/jdk-1_5_0-beta2-windows-i586.exe
Java
자바의 역사 및 특징
- Java.ppt
설마 이거 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의 활용분야
는 더 슬퍼집니다. 보여주신 처음 예제가 거의다 ActiveX 구현물입니다.국내 Rich Client 분야는 전부 ActiveX에 주고 해외는 Flash에게 내주었습니다. 현재(2003) Java의 활용분야의 80% 이상은 applet이 아닌 서버 프레임웍의 J2EE와 모바일 프레임웍의 J2ME 입니다.
--NeoCoin
책을 보고 했는데 문제가 많았나 봅니다; 미숙한 발표여서 죄송합니다 (__) --[iruril] 저는 발표를 못봐서, 미숙한지 모릅니다. 그러나 PT가 그대로 진행되었다면, 사실과 다른 내용은 충격적이군요. 다음부터라도 반드시 타인에게 감수를 받거나, 자신에게 납득할수 있는 내용을 담으세요. --NeoCoin
이클립스 사용법
프로젝트 만들기
- File -> New -> Project
Java Project 선택
http://zeropage.org/pub/upload/snap1.jpg http://zeropage.org/pub/upload/snap2.jpg
Class 만들기
- File -> New -> Class
http://zeropage.org/pub/upload/snap3.jpg
컴파일 및 실행
- Run -> Run As -> Java Application
http://zeropage.org/pub/upload/snap4.jpg
간단한 예제프로그램 작성 및 테스트
- 테스트 프로그램(FirstJava.java)
public class FirstJava {
public static void main(String argv[]) {
System.out.println("Hello world!");
}
}
윈도우 프레임창 띄우기
- JFrame의 show() 메소드 -> 프레임창을 보이게 한다.
- JFrame의 setBounds(int x, int y, int weight, int height) 메소드
-> int 전달인자가 순서대로 창을 띄우는 'x좌표', 'y좌표', '창넓이', '창높이' 를 가리킨다
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();
}
}
- BufferedReader - 캐릭터, 배열, 행을 버퍼링 하는 것에 의해, 캐릭터형 입력 스트림으로부터 텍스트를 읽어들인다
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();
}
}
}
Swing_JFrame.gif
그림그리기
http://zeropage.org/pub/upload/snap5.jpg
- 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좌표', '원의 너비', '원의 높이' 를 가리킨다
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);
}
}
마우스 이벤트
- addMouseListener 로 마우스 핸들러를 추가한다.
- mouseClicked 메소드 -> 메우스를 클릭했을 경우 작동
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();
}
}
TicTacToe
마우스를 클릭했을 경우 paint 함수를 호출
- repaint() 메소드를 사용
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!! ");
}
}
여는 이야기
Programmer's Toolkit
실습 : Programming
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
Code Review - 어떤 생각을 하며 작성했나요?
휴식
Structured Programming 소개
HIPO 예제
Paper Programming : HIPO 그리기
자신이 HIPO 그린 것을 근거로 구현
휴식
OOP 소개
시연 : CRC Card
OOP Demo 1 : Message 를 날립시다~ (Python)
SimpleStar.zip http://zeropage.org/pub/language/python/Python-2.3.exe
압축을 풀고, 해당 디렉토리에 들어간 뒤 c:\python23\python.exe 를 실행해주세요.
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()
OOP Demo 2 : Message 를 날립시다~ (Java & Eclipse)
휴식
자바 간단 설명
Eclipse 간단 설명
자바 문법 간단 설명
Class 추가 방법
public static void main
구현 : CRC 때 했었던 것
휴식
interface 개념 추가 설명
구현 : 다른 객체와의 대화 & 기능의 변화
SimpleRoach.zip
토론 & 발표
마무리
기타
[1002]아
id : cvs_writer pass: zeropager
를 만들어 두었으니, 시간 남는 사람들이 있다면 서로서로 소스 공유 해보는 경험도 좋을것 같다. 이렇게 공유된다 이런식 말이지
:pserver:cvs_writer@zeropage.org:/home/CVS
토요일까지만 개정 살려 둘께 --NeoCoin