More actions
imported>Unknown No edit summary |
(Repair MoniWiki formatting after migration) |
||
| (One intermediate revision by the same user not shown) | |||
| Line 7: | Line 7: | ||
=== Java === | === Java === | ||
==== 자바의 역사 및 특징 ==== | ==== 자바의 역사 및 특징 ==== | ||
* | * Java.ppt | ||
설마 이거 PT하셨나요? PT의 내용이 제 뒤통수를 때리는것 같군요. | 설마 이거 PT하셨나요? PT의 내용이 제 뒤통수를 때리는것 같군요. | ||
자바 이름의 유래 및 개발 역사 | 자바 이름의 유래 및 개발 역사 | ||
에서는 유래가 없군요. C기반이 아니라, C++(문법), Smalltalk(vm) 의 철학을 반영합니다. Early History 는 마치 제임스 고슬링이 처음 만든것 처럼 되어 있군요. (SeeAlso [http://en.wikipedia.org/wiki/Java_programming_language#Early_history Java Early history] | 에서는 유래가 없군요. C기반이 아니라, C++(문법), Smalltalk(vm) 의 철학을 반영합니다. Early History 는 마치 제임스 고슬링이 처음 만든것 처럼 되어 있군요. ([[SeeAlso]] [http://en.wikipedia.org/wiki/Java_programming_language#Early_history Java Early history] | ||
개발 역사는 사장 직전의 Java를 구한 Servlet-JSP 기술이 빠졌고, 2001년 기준의 'JavaTM 2 Playtform 1.3,'는 현재 J2SE 로 이름을 바꾸었지요. 1.4는 1년도 전에 나오고, 1.5 가 8월에 발표됩니다. Java는 major upgrade 시 많은 부분이 변경됩니다 | 개발 역사는 사장 직전의 Java를 구한 Servlet-JSP 기술이 빠졌고, 2001년 기준의 'JavaTM 2 Playtform 1.3,'는 현재 J2SE 로 이름을 바꾸었지요. 1.4는 1년도 전에 나오고, 1.5 가 8월에 발표됩니다. Java는 major upgrade 시 많은 부분이 변경됩니다 | ||
Java의 활용분야 | Java의 활용분야 | ||
는 더 슬퍼집니다. 보여주신 처음 예제가 거의다 ActiveX 구현물입니다.국내 Rich Client 분야는 전부 ActiveX에 주고 해외는 [[Flash]]에게 내주었습니다. 현재(2003) Java의 활용분야의 80% 이상은 applet이 아닌 서버 프레임웍의 J2EE와 모바일 프레임웍의 J2ME 입니다. | 는 더 슬퍼집니다. 보여주신 처음 예제가 거의다 ActiveX 구현물입니다.국내 Rich Client 분야는 전부 ActiveX에 주고 해외는 [[Flash]]에게 내주었습니다. 현재(2003) Java의 활용분야의 80% 이상은 applet이 아닌 서버 프레임웍의 J2EE와 모바일 프레임웍의 J2ME 입니다. | ||
--NeoCoin | --[[NeoCoin]] | ||
책을 보고 했는데 문제가 많았나 봅니다; 미숙한 발표여서 죄송합니다 (__) --[iruril] | 책을 보고 했는데 문제가 많았나 봅니다; 미숙한 발표여서 죄송합니다 (__) --[iruril] | ||
저는 발표를 못봐서, 미숙한지 모릅니다. 그러나 PT가 그대로 진행되었다면, 사실과 다른 내용은 충격적이군요. 다음부터라도 반드시 타인에게 감수를 받거나, 자신에게 납득할수 있는 내용을 담으세요. --NeoCoin | 저는 발표를 못봐서, 미숙한지 모릅니다. 그러나 PT가 그대로 진행되었다면, 사실과 다른 내용은 충격적이군요. 다음부터라도 반드시 타인에게 감수를 받거나, 자신에게 납득할수 있는 내용을 담으세요. --[[NeoCoin]] | ||
==== 이클립스 사용법 ==== | ==== 이클립스 사용법 ==== | ||
| Line 35: | Line 35: | ||
* 테스트 프로그램(FirstJava.java) | * 테스트 프로그램(FirstJava.java) | ||
public class FirstJava { | public class FirstJava { | ||
public static void main(String argv | public static void main(String argv[]) { | ||
System.out.println("Hello world!"); | System.out.println("Hello world!"); | ||
} | } | ||
| Line 54: | Line 54: | ||
} | } | ||
public static void main(String args | public static void main(String args[]) { | ||
FirstJava helloWorld = new FirstJava(); | FirstJava helloWorld = new FirstJava(); | ||
helloWorld.setBounds(100,100,800,600); | helloWorld.setBounds(100,100,800,600); | ||
| Line 93: | Line 93: | ||
} | } | ||
public static void main(String | public static void main(String[] args) { | ||
breader = new BufferedReader(new InputStreamReader(System.in)); | breader = new BufferedReader(new InputStreamReader(System.in)); | ||
try { | try { | ||
| Line 110: | Line 110: | ||
} | } | ||
Swing_JFrame.gif | |||
==== 그림그리기 ==== | ==== 그림그리기 ==== | ||
http://zeropage.org/pub/upload/snap5.jpg | http://zeropage.org/pub/upload/snap5.jpg | ||
| Line 138: | Line 138: | ||
} | } | ||
public static void main(String args | public static void main(String args[]) { | ||
FirstJava helloWorld = new FirstJava(); | FirstJava helloWorld = new FirstJava(); | ||
helloWorld.setBounds(100,100,800,600); | helloWorld.setBounds(100,100,800,600); | ||
| Line 175: | Line 175: | ||
}); | }); | ||
} | } | ||
public static void main(String args | public static void main(String args[]) { | ||
FirstJava helloWorld = new FirstJava(); | FirstJava helloWorld = new FirstJava(); | ||
helloWorld.setBounds(100,100,800,600); | helloWorld.setBounds(100,100,800,600); | ||
| Line 184: | Line 184: | ||
} | } | ||
==== TicTacToe ==== | ==== [[TicTacToe]] ==== | ||
===== 마우스를 클릭했을 경우 paint 함수를 호출 ===== | ===== 마우스를 클릭했을 경우 paint 함수를 호출 ===== | ||
| Line 208: | Line 208: | ||
}); | }); | ||
} | } | ||
public static void main(String args | public static void main(String args[]) { | ||
FirstJava helloWorld = new FirstJava(); | FirstJava helloWorld = new FirstJava(); | ||
helloWorld.setBounds(100,100,800,600); | helloWorld.setBounds(100,100,800,600); | ||
| Line 278: | Line 278: | ||
== OOP Demo 1 : Message 를 날립시다~ (Python) == | == OOP Demo 1 : Message 를 날립시다~ (Python) == | ||
SimpleStar.zip | |||
http://zeropage.org/pub/language/python/Python-2.3.exe | http://zeropage.org/pub/language/python/Python-2.3.exe | ||
| Line 318: | Line 318: | ||
== interface 개념 추가 설명 == | == interface 개념 추가 설명 == | ||
== 구현 : 다른 객체와의 대화 & 기능의 변화 == | == 구현 : 다른 객체와의 대화 & 기능의 변화 == | ||
SimpleRoach.zip | |||
== 토론 & 발표 == | == 토론 & 발표 == | ||
== 마무리 == | == 마무리 == | ||
| Line 329: | Line 329: | ||
:pserver:cvs_writer@zeropage.org:/home/CVS | :pserver:cvs_writer@zeropage.org:/home/CVS | ||
토요일까지만 개정 살려 둘께 | 토요일까지만 개정 살려 둘께 | ||
--NeoCoin | --[[NeoCoin]] | ||
---- | ---- | ||
[[데블스캠프2004]] | [[데블스캠프2004]] | ||
Latest revision as of 00:34, 29 March 2026
데블스캠프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