어제 배운 연결 풀을 기반으로 소켓을 떠올려 보세요. 원칙의 핵심 사항은 다음과 같습니다. 서버는 연결을 처리하기 위해 제한된 수의 PooledConnectionHandler 스레드를 열고 풀 연결에 모두 추가합니다. pool(실제로는 linklist() 객체); PooledConnectionHandler가 연결 풀에서 연결 요청을 찾으면 즉시 이를 처리하기 시작합니다(따라서 정적 변수임).
지금까지 일부 Java 프로그래밍에 대한 기본 내용은 이제 거의 끝났습니다. 이제 배운 내용을 적용할 차례입니다. 어떤 언어든 진정으로 시작하려면 실제 프로그래밍 경험이 있어야 합니다. 🎜>
C++로 테트리스 게임을 프로그래밍하기 전에 사용했는데, 이 게임의 프로그래밍이 객체지향적 사고를 구현할 수 있다고 느꼈습니다. Java와 C++는 공통점이 많고 누구나 따라할 수 있으므로 구현해 보겠습니다. 어차피 잊어버릴 뻔 했으니, 과거를 복습하고 새로운 것을 배워야 합니다. 또한, 소켓을 공부하는 데 너무 많은 시간을 소비했기 때문에 간단히
테트리스 프로그램을 컴파일하세요. Java 프로그램 중 Applet 프로그램만이 그래픽 사용자 인터페이스(GUI)를 요구하는데, 이는 AppletViewer나 브라우저의 도움을 받아 구현됩니다. Frame 클래스를 사용해야 합니다. Frame 클래스는 윈도우 클래스입니다. 의 하위 클래스는 그래픽 사용자 인터페이스의 기본 윈도우입니다. 다음의 작은 프로그램을 읽고 구현하면 기본적으로 Java에서의 그래픽 사용자 인터페이스를 이해할 수 있습니다. .
파일 이름: FrameMemo.java
기능: 메뉴가 있는 프레임을 표시하고 창의 아무 곳이나 클릭하면 프로그램이 종료됩니다.
java.awt.*;
공용 클래스 FrameMemo는 Frame을 확장합니다
{
public String motd;
public FrameMemo(String s)
{
super(s );//super는 여기서 부모 클래스를 나타내고 This는 이것이 나타내는 클래스에 해당하므로 여기서 호출되는 것은 부모 클래스
motd=s;
resize(300,300);SetMenu();
}
public FrameMemo()//오버로드된 생성자
{
this("프레임의 메모입니다");//여기서 호출되는 것은 FrameMemo(S) 생성자
SetMenu();
}
public void SetMenu()
{
Menu m,n;
m=new Menu("예제" );
m.add(new MenuItem(" Basic"));
m.add(new MenuItem("Simple"));
n=new Menu("추가 예") ;
n.add(new MenuItem("하위 기본"));
m.add(n);
MenuBar mb=new MenuBar();
mb.add(m );
setMenuBar(mb);
}
공용 빈 페인트(그래픽 g)
{
g.drawString(motd,15,15);
g. drawString("종료하려면 아무 곳이나 클릭하세요",45,45) ;
}
public void start()
{
show();
}
public boolean mouseDown(Event e,int x, int y)
{
hide();//창 숨기기
dispose();//리소스 해제
System.exit(0 );
false 반환;
}
public static void main(String args[])
{
FrameMemo m;
m=new FrameMemo();
m.start();
}
}
창을 만든 후에는 다양한 그래픽 인터페이스 개체도 창에 배치해야 합니다. 즉 레이아웃의 원리입니다. 레이아웃 컨테이너를 사용한 다음 특정 규칙에 따라 개체를 채워야 합니다. 다음 예에서는 빠르게 찾는 데 도움이 되는 매우 구체적인 설명을 제공했습니다. 앞으로 Java 구문을 잊어버리면
file://layout example
file://j2sdk1.4.1
import java.awt.*;import java.applet.*;
공용 클래스 레이아웃 확장 프레임
{
패널 fnames,styles;//패널 fnames에 두 개의 글꼴 버튼을 배치하고 패널에 세 개의 스타일 버튼을 배치합니다. styles
Button sans, serif;
Button Bold,bigger,smaller;//2개의 글꼴 버튼과 3개의 스타일 버튼 정의
SampleCanvas 샘플;//오버로드된 캔버스 객체 정의
String fName=new String ("SansSerif ");
int fBold=0;
int fSize=12;
public Layout(){
super("레이아웃 메모");
setFont (new Font ("Sans",Font.BOLD,12));
setLayout(new BorderLayout());//BorderLayout 레이아웃을 설정합니다. 이 메서드는 5개의 요소를 정렬할 수 있습니다
file://방향은 다음과 같습니다. east, west, south, north, center
file://다음 프로그램은 아래쪽 또는 남쪽에 두 개의 버튼을 설정하는 프로그램입니다.
fnames=new Panel();
fnames.setLayout( new GridLayout(1,2,5,10)) ;//패널의 GridLayout 레이아웃 설정
file://레이아웃은 그리드 레이아웃입니다.
file://4개의 매개변수는
file입니다. ://행 수, 열 수, 가로 간격(픽셀), 세로 간격(픽셀)
sans=new Button("Sans Serif");
fnames.add(sans);
serif =new Button("Sans Serif");
fnames.add(serif); file://각각 두 개의 버튼 추가
add(fnames, "South"); BorderLayout 레이아웃
file:// 다음 프로그램은 왼쪽 또는 서쪽에 세 개의 버튼을 설정합니다
styles=new Panel();
styles.setLayout(new GridLayout(3,1,10, 5));
bold=new 버튼("Bold");
styles.add(bold);
bigger=new Button("bigger");
styles.add(bigger);
smaller=new Button("더 작게");
styles.add(더 작게);
add(styles,"West");
sample=new SampleCanvas();
add(sample,"Center");
setSize(200,200);//이 문장을 놓치지 마세요
/ / setVisible(true);
}
public void start(){
show();
}
public static void main(String[ ] args)//초기화
{
Layout MainFrame=new Layout();
MainFrame.start();
}
클래스 SampleCanvas는 Canvas를 확장합니다
{
문자열 메시지;
public SampleCanvas() file://클래스의 생성자
{
rewrite("SanSerif"); . Java는 소멸자를 지원하지 않습니다.
}
public void rewrite(String s)
{
setFont(new Font(fName,fBold,fSize));
message="This 글꼴은"+fName;
repaint();
}
public void Paint(Graphics g)
{
g.drawString(message,10,50);
}
}
}
(1월 28일) 온라인 버전의 테트리스 프로그램에는 다음 클래스가 포함되어야 합니다.
1.MainFrame: Main Interface 클래스, Frame에 이어 클래스의 기본 정의 및 메소드 기능은 다음과 같습니다.
class MainFrame은 Frame을 확장합니다{
public MainFrame(){//초기화 작업은 주로 객체(버튼, 캔버스, etc.)
}
public boolean keyDown(Event e,int key){//키보드 작업 처리
}
public boolean action(Event e,Object arg){//마우스 작업 처리
}
public void start(){//지난 며칠 동안의 메모를 살펴보세요
show();
}
public static void main(String args[]) throws IOException{
MainFrame app;
app=new MainFrame();
app.start();
}
}
2. 이 캔버스 개체는 모든 작업을 완료합니다. 정사각형에 관한 논리연산은 Canvas 클래스에서 이어집니다
3. 블록 클래스, 즉 블록 클래스입니다. 이 클래스는 블록의 모양(다차원 배열) 등에 대한 정보를 저장합니다. 이 클래스는 MainCanvas 클래스를 보완할 것입니다. 실제로 Block도 사용할 수 있습니다. 원래 C++ 버전에서는 MainCanvas와 하나의 클래스로 만들어졌습니다. 그러나 객체 지향 관점에서는 다음이 더 적합합니다.
4. 클라이언트의 Thread 클래스인 ClientThread 클래스
5. ServerThread 클래스, 즉 서버측 스레드 클래스
그리고 ClientThread는 네트워크 동기화 작업을 담당합니다
이 부분의 작업을 분석한 결과 기본적으로 작업은 완료되었습니다. 반복하기가 너무 지루하기 때문에 온라인 버전의 테트리스 구현 계획을 포기하기로 결정했습니다.
자바 애플릿을 기반으로 한 전자칠판 구현에 집중할 예정입니다.
반달에 걸친 루키 노트가 드디어 끝났습니다. 어떤 언어를 시작하든 언어는 결국 디자인을 구현하는 도구일 뿐입니다. 어떤 도구를 사용해도 익숙해지면 안 됩니다. 도구를 사용하여 아름다운 예술 작품을 만들어낸다는 것은 늘 염두에 두어야 할 일입니다.
자바를 시작하는 과정에서 저에게 많은 도움을 준 책 세 권이 있습니다. 첫 번째는 영국인이 쓴 Machinery Industry Press의 "Java Concise Tutorial"입니다. 책에 나오는 언어는 명확하고 간단하며 처음에는 기본을 이해할 수 있습니다. 두 번째 책은 초보자를 위한 진정한 입문서인 Tan Haoqiang이 편집한 "Java 프로그래밍"입니다. 마지막 내용은 Think in Java in chm 형식으로, 특히 스레딩 및 동기화 측면에서 Java를 더 깊이 이해하는 데 도움이 되었습니다. 또한 제가 인용한 모든 책은 소켓에 대한 예제에서 나온 것입니다. Java로 소켓 프로그램을 작성하는 방법에 대한 교재입니다.
자, CDSN 친구들에게 새해 복 많이 받으세요! : 다운로드 주소
1. 책 제목: Java Socket 101
참고: 이 튜토리얼에서는 소켓이 무엇인지 설명하고 Java 프로그램에서 사용하는 방법을 알려줍니다. 단일 클라이언트/서버 통신부터 서버에 액세스하는 클라이언트 풀에 이르기까지 몇 가지 실제 예제를 검토함으로써 소켓을 사용하여 실제 세계에서 직면하는 일반적인 상황을 처리하는 방법을 배우게 됩니다.
URL: http://www-900.ibm.com/developerWorks/cn/edUCation/java/j-sockets/tutorial/j-sockets.zip
책 제목: Think in Java (중국어 버전) ---chm 형식
URL: http://www.code-labs.com/manual/Think%20In%20Java.chm
은 여전히 유효합니다
위 내용은 Java를 처음 배우는 초보자를 위한 메모(10) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(m.sbmmt.com)를 참고해주세요!