201871010118- 당나라 Jingbo "객체 지향 프로그래밍 (자바)"두번째 주 학습 요약

텍스트 형식의 보웬의 시작 (2 점)

계획

함유량

이 작품은 과정 속

https://www.cnblogs.com/nwnu-daizh/

어디에서 작업이 요구 사항

https://www.cnblogs.com/lily-2018/p/11441372.html

작업 학습 목표

(1) 마스터 Vetor, 스택, 일반적인 사용과 API의 해시 테이블 세 가지 클래스;

(2) 마스터 ArrayList를, 그리고 두 클래스의 사용은 일반적인 API를 LinkList.

(3) API의 일반적으로 사용되는 클래스의 자바 GUI를 만들 수있는 프레임 워크와 속성을 마스터;

(4) 페어 프로그래밍 (페어 프로그래밍), 프로그램 개발 협력 두 사람의 경험을 적용 할 수 있습니다.

에세이 보웬의 본문 내용은 다음과 같습니다 :

첫 부분 : 요약 제 IX, 이론적 지식 장 X (40 점)

 

1. 데이터 구조 : 선형 형태 스택 큐, 스트링, 어레이, 및 파일 등의 선형 데이터 구조로.

                          나무와도 같은 B. 비선형 데이터 구조.

1) 선형 동일한 테이블의 모든 데이터 요소는 동일한 데이터 유형이어야한다.

  선형리스트 구조는 저장 테이블과 목록의 순서에 따라 나눌 수 있습니다.

2) 스택 : 그것은 특별한 선형 테이블, 첫 번째 출력 (LIFO) 구성의 마지막이다.

  만 트레일러 선형 테이블 삽입 및 삭제 동작을 제한 스택 예고편 스택의 헤더 바닥 호출 스택이라고한다.

3) 대기열 : 테이블의 한쪽 끝에서만 정의 된 모든 삽입은 선형 적으로 삭제 된 테이블은 모든 테이블의 다른 쪽 끝에서 수행된다. 우선 출력 (FIFO) 구조의 제이다.

  테이블의 한쪽 끝은 삭제라는 큐의 머리를 수 있도록 꼬리 끝의 허가 삽입 함.

2. :( 수집 컨테이너) 복수의 요소를 포함하고, 희토류 원소가 포함 된 동작 방법을 제공하는 데, 그것은 요소 오브젝트 조성물의 동일한 형태로 형성 될 수있다 포함 된, 또한 다른 유형의 객체들로 구성 될 수있다.

  1) 컬렉션 프레임 워크 : 클래스 라이브러리의 자바 아키텍처 통합 세트.

  2) 상기 패키지에 포함 java.util의 작업 클래스의 집합 () : 기본 데이터는 벡터, 해시 테이블과 같은 몇몇 스택으로지지 구조체를 제공한다.

  3) 모음의 특징 : 수신 만 개체 ;.

                                      B. 컬렉션 클래스 오브젝트 (오브젝트 번 클래스 정보가 손실되는 컬렉션 클래스로) 오브젝트 클래스를 수신 인스턴스이다

  4) 벡터 유형 : 유사한 가변 길이 배열. 그것은 단지 그 요소의 인덱스를 통해 액세스되는 객체를 저장할 수 있습니다.

  5) 스택 클래스 (벡터 서브 클래스) : 그것은 스택 데이터 구조를 설명합니다. (모든 객체는 객체 클래스의 hashCode 메소드에 의해 얻을 수있다 해시 코드가 있습니다.)

(기본 클러스터 구성 프레임 워크) a.Collection : 기본 인터페이스 프레임 워크의 3. 설정 컬렉션 계층 구조의 루트 인터페이스는 JDK 직접 인터페이스 구현 클래스를 제공하지.

                                           b.Set : 중복 요소를 포함 할 수 없습니다, 그 요소는 고유해야합니다. 객체는 저장소의 순서로 저장 될 수있다. (클래스를 달성하도록 설정 인터페이스 HashSet에, TreeSet에 있음)

                                           c.List는 : 명령 세트는 중복 요소를 포함 할 수 있습니다. 이 지수가 액세스 할 수있는 방법을 제공합니다. 클래스가 구현 그것을 가지고 ArrayList를하고 LinkedLis (예를 들어 ArrayList를 : 배열은 자동으로 용량을 늘릴 수 있습니다)

                                           d.Map:Map 인터페이스는 고유 키 값에 매핑됩니다. 이 키 - 값 쌍을 포함하고 있습니다. 지도는 중복 키를 포함 할 수 없습니다. SortedMap를 순서대로지도를 상승의 핵심이다.

3. 사용자 인터페이스 : 사용자의 컴퓨터 시스템 (각종 프로그램) 상호 작용 인터페이스

  그래픽 사용자 인터페이스 : 그래픽으로 표시 사용자 인터페이스

4.AWT : 용기와 GUI를 디자인하는 데 사용되는 구성 요소 클래스를 제공 java.awt 패키지에 포함 된 자바 추상 ​​윈도우 툴킷 (추상 WindowToolkit, AWT).

  지역의 GUI 툴킷 거래에 대한 작성 및 그래픽 요소위원회의 행동 : 방법은 라이브러리 핸들 요소 인터페이스를 사용자에게 AWT.

5.Swing : 스윙 사용자 인터페이스 라이브러리가 아닌 피어 기반의 GUI 툴킷이다.

  스윙 컬렉션의 풍부하고 더 편리한 사용자 인터페이스 요소를 가지고있다.

  플랫폼에 관련된 기본 플랫폼 그래서 몇 가지 작은 버그 스윙 의존.

  스윙 javax.swing의 라이브러리는 가방에 배치됩니다.

대부분의 AWT 구성 요소는 스윙 해당 구성 요소가 있습니다. AWT 컴포넌트 편지 "J"를 이름의 스윙 구성 요소의 이름은 일반적으로 앞에 추가됩니다.

프레임 만들기

1. 성분 : 그래픽 (화면 상에 표시 할 수있어, 사용자가 상호 작용할 수 있음)로 표시하는 데 사용되는 구성 그래픽 사용자 인터페이스

객체는 일반적으로 Component 클래스의 하위 클래스로 생성 2. 간접적 어셈블리 또는 서브 클래스라고한다.

컨테이너 : 컨테이너는 자바의 구성 요소 및 조립체 수용하도록 배열. 용기는 일반적으로 사용되는 프레임 (프레임 JFrame의)

위치 :
  -는 setLocation의 setBounds하고 구성 요소 클래스의 일반적으로 사용되는 방법
일반적인 속성
  -title : 프레임 헤더
  -IconImage : 프레임 아이콘

  툴킷 클래스의 메소드를 호출하는 것에 의해 획득 화면 크기 정보 : 상기 프레임의 크기를 결정.

4. 정보 어셈블리에 표시된

조립 AWTFrame에 직접 추가되는 AWT 추가 () 메소드를 호출 할 수 있습니다, 다음 스윙 구성 요소 창의 내용에 추가됩니다.

내용 창은 구성 요소를 추가하는 데 사용되며, 다음 코드를 추가합니다 :

  컨테이너의 컨텐츠 구획 = getContentPane ();

사용자는 자신의 구성 요소 클래스를 생성 할 수 있습니다 어셈블리를 다시로드의 paintComponent이 시간 필요에, 그림에 ().

사용자 자체 내장 된 구성 요소는 내용 창에 추가 할 수 있습니다.

공용 보이드가 (부울 b)는 setEnabled 세트 요소가 활성화 될 수 있는지 여부를.
  변수 b의 값에 해당하는 경우, 구성 요소가 활성화 될 수있다.
  파라미터 B에 거짓의 값은, 구성 요소가 활성화 될 수없는 경우.
  기본적으로 어셈블리를 활성화 할 수 있습니다.
공공 무효로 setVisible (부울 B) 의 가시성 어셈블리 용기 내에 배치.
  경우 용기에서 보이는 사실, 부품의 b 값.
  허위의 B 값은, 성분은 용기에 표시되어 있지 않을 때.
  창 조립 형 추가는 다른 유형의 구성 요소는 기본적으로 볼 수 있습니다.

파트 II : 실험 부분

실험 예 1 : 시험 절차 1 (6 포인트)

제 9 장 샘플 프로그램, 시험 절차 및 코드 주석을 소개했다.

※ 명령은 프로그램 이해의 실행 결과와 관련하여, 다음과 같은 세 가지 샘플 프로그램을 실행, JDK 편집을 사용하여 실행합니다;

※ 마스터 Vetor는, 스택, 해시 테이블은 세 개의 클래스와 공통 API를 사용합니다.

벡터 :

다음과 같이 실험 절차는 다음과 같습니다

1 임포트 java.util.Vector에, 오브젝트 // 자동 증가 어레이 
 (2) 
 (3) {클래스 고양이. 
 4 개인의 INT catNumber;. 
 . 5 고양이 (I INT) { 
 6 catNumber = I;. 
 . 7} 
 . 8 공극 인쇄 () { 
 . 9 System.out에 .println ( "고양이 #"+ catNumber) 
(10)} 
. 11} 
12 고양이 {공용 클래스 
13 공공 정적 무효 메인 (문자열 []에 args) {이고 
; 14 벡터 <고양이> = 새로운 새 CATS Vector의 <고양이> () 
15 ( 0 = I INT]. I <7; I ++) 
16 cats.addElement (새 새로운 고양이 (I)) 
. (; I <cats.size INT (I = 0); 17 I가 ++) 
18 인 (cats.elementAt (I)) .print (); // 필수 형변환 
19} 
20} 
결과는 다음이다 :

 

 

스택:

다음과 같이 실험 절차는 다음과 같습니다

java.util의 * 1import ;. 클래스 
 2 // Public 클래스 스택 스택 (마지막 아웃) 
 . (3) { 
 . 4 정적 문자열 [] = {개월 "골드", "은색", "구리", "아이언"} 
 . 5 공공 정적 무효 메인 (문자열 []에 args) { 
 6 스택 <문자열> 새로운 새 STK = 스택 <문자열> ();. 
 . 7 (INT I = 0; I <months.length; I ++) 
 8 stk.push (개월 [I]).; // 푸시 
 . 9에서 System.out.println (STK) 
10에서 System.out.println ( "요소 (2) ="+ stk.elementAt (2)) 
(11) 동안 (stk.empty ()!). 
12 System.out에있다. 에 println (stk.pop는 ()); // 스택 중 출력 소자 
(13)} 
14} 
결과는은 다음과 같다 :

 

 

 해시 테이블 :

다음과 같이 실험 절차는 다음과 같습니다

. java.util의 * 가져 오기 클래스, 
 2 {클래스 카운터 
 3 = I INT 1; // 권한 수정없이 :.. 쉬운 유형 
 4 공공 문자열 toString () {// 데이터 문자열 타입으로 데이터의 다른 유형 
 5 반환 (I)를 Integer.toString를] 
 . 6} 
 . 7} 
 . 8 
 . 9 통계 {공용 클래스 
10 공공 정적 무효 메인 (문자열 []에 args)을 { 
11 Hashtable의 새로운 새로운 HT = Hashtable의 (). 
12위한 INT (I = 0; I <10000; ++ I) { 
13 R 정수 새로운 새로운 정수 및 LT = ((INT) (인 Math.random () * 20)); //는 0-20 생성 () (20)를 포함하지 않는 임의의 정수 번호 
14의 경우 (ht.containsKey (R)) // R 있는지 여부가 판정된다 해시 테이블의 핵심 요소 
(15) ((카운터) ht.get (R )) // I ++ ;. 의 방법에 의해 그 값을 얻을 
다른 16 
. 19 HT에서 System.out.println ( ); 
. 17 ht.put (R, 새로운 신규 카운터 ( )); // HT가 존재하지 않습니다
18} 
20} 
21} 
결과는 다음이다 :

 

 

실험 예 1 : 시험 절차 2 (6 포인트)

편집에 JDK 명령을 사용 ※ ArrayListDemo LinkedListDemo에게 프로그램의 결과가 프로그램을 이해 결합 된 두 개의 프로그램을 실행;

ArrayListDemo :

다음과 같이 실험 절차는 다음과 같습니다

1 수입하고있는 java.util. *; 
 2 개 
 3 Public 클래스 ArrayListDemo // ArrayList를使用了数组的实现
 -4- { 
 5 공공 정적 무효 메인 (문자열 []는 argv) { 
 도 6의 ArrayList 알 = 새로운 ArrayList를 (); 
 7 // ArrayList의에 요소를 많이 추가 ... 
 8 al.add (새 정수 (11)); 
 9 al.add (새로운 정수 (12)); 
10 al.add (새로운 정수 (13)); 
11 al.add (새 문자열 ( "안녕하세요")); //下标从开始0, 4添加个元素
12 // 먼저 루프를 사용하여 인쇄. 
13에서 System.out.println는 ( "인덱스 검색"); 
14 (INT I = 0; I <al.size (); 나는 ++) { 
15에서 System.out.println ( "요소"+ I + "="+ al.get (I)); 
16}
17}
결과는 다음과 같다 :

 

 

 LinkedListDemo :

다음과 같이 실험 절차는 다음과 같습니다

1 수입하고있는 java.util. *; 
 2 
 3 Public 클래스 LinkedListDemo 
 -4- { 
 5 공공 정적 무효 메인 (문자열 []는 argv) 
 6 { 
 7 //创建一个链表
 8에서 L = LinkedList의 새로운 LinkedList의 (); 
 9 l.add (새 개체 ()); 
10 l.add ( "안녕하세요"); 
11 l.add ( "zhangsan"); 
12 반복자 리 l.listIterator = (0); 
13 일 동안 (li.hasNext ()) 
(14)에서 System.out.println (li.next ()); 
15 (l.indexOf ( "안녕하세요") <0)의 경우    
16 System.err.println을 ( "조회하지 작업을 수행"); 
17 다른 
18 System.err.println을 ( "조회 작동");

 

 

실험 예 1 : 시험 절차 3 (6 분)

※ 편집 프로그램 실행 디버그 재료 Elipse 환경에서 프로그램을 이해하는 프로그램의 360 9-1 결합 된 결과;

일반적인 API의 ※ 마스터 ArrayList를, 사용 LinkList 두 클래스.

다음과 같이 실험 절차는 다음과 같습니다

1 수입하고있는 java.util. *; 
 2 
 3 / ** 
 4 *이 프로그램은 연결리스트에 대한 작업을 보여줍니다. 
 5 * 1.11 @version 2012-01-26 
 6 * 케이 HORSTMANN @author 
 7 * / 
 8 공용 클래스 LinkedListTest 
 9 { 
10 공공 정적 무효 메인 (문자열 []에 args) 
11 { 
12 //创建和B两个链表
13 목록 <문자열> a)는 (> 새 LinkedList의를 <=; //泛型
14 a.add ( "에이미"); 
15 a.add ( "칼"); 
16 a.add ( "에리카"); 
(17) 
(18)에서 <문자열> B = 새 LinkedList의 <> (); //泛型
19 b.add ( "밥"); 
20 b.add ( "덕"); 
21 b.add ( "프랜시스");
(23)
@ 24 개 B 병합 즉 
25 
, 26 반복자 <문자열> aIter a.listIterator = () 인 
27 반복자 <문자열> = 무는 b.iterator (); 
28 
(29) 동안 (bIter.hasNext는 ()) 
30 { 
31은 IF (aIter.hasNext ()) aIter.next (); 
32 aIter.add (bIter.next ()); 
33이다} 
(34)는 
35에서 System.out.println (A) 
(36) 
리스트에서 37 // 매초 스페이서 요소 요소 삭제 
38이고 
, 39 = 무는 b.iterator () 
(40)가있는 동안은 (bIter.hasNext는 ()) 
{41되는 
42 bIter.next ()이고; // 스킵 한 소자 
IF는 (bIter.hasNext는 ()) (43)가된다 
(44)는 { 
45 bIter.next (); // 다음 이동 소자 
46 bIter.remove (); // 삭제하도록 소자
} 47 
48} 
49 
50에서 System.out.println (B) 
(51)가 
52 // 일괄 운전은 : B에서의 모든 단어를 제거 
53 
54 a.removeAll (B)이고; 
55 
(56)에서 System.out.println (A)이다 / / 메소드 AbstractCollection의 클래스 구성된 toString 모든 요소의리스트를 출력 
(57)} 
58} 
결과로서 다음이다 :

 

 

실험 2 : 시험 절차 1 (6 포인트)

다음 프로그램을 실행 ※ 프로그램의 결과를 관찰 .

javax.swing의 수입. *;

공용 클래스 SimpleFrameTest

{

   공공 정적 무효 메인 (문자열 []에 args)

   {

     JFrame의 프레임을 새로운 JFrame의 () =;

     frame.setBounds (0, 0300, 200);

     frame.setDefaultCloseOperation (의 JFrame.EXIT_ON_CLOSE);

     frame.setVisible (TRUE);    

   }

}

다음과 같이 실험 절차는 다음과 같습니다

* javax.swing에서 오기 1 ;.. 
 2 SimpleFrameTest Public 클래스 
 3 {. 
 4 공공 정적 무효 메인 (문자열 []에 args). 
 (5) {. 
 6 JFrame의 = 새로운 새로운 프레임 JFrame의 (). // 클래스 객체 프레임을 생성 
 , 7 frame.setBounds (0 0,300, 200); // 좌표와 폭 및 높이를 정의 
 8 frame.setDefaultCloseOperation (의 JFrame.EXIT_ON_CLOSE)를 // 닫기 동작 윈도우 
 9 frame.setVisible를 true // 윈도우가 보이는     
10} 
11}

 

 

※에서 elipse IDE 디버거 실행 교과서 10-1 (407) 프로그램, 프로그램을 이해하는 프로그램의 결과와 함께 실행, 위의 절차, 사고의 유사점과 차이점에 비해;

빈 프레임 생성 방법을 파악 ※;

메인 스레드 및 이벤트 디스패치 스레드 개념을 이해 ※;

※ 마스터 GUI 기술은 최상위 창을 만들 수 있습니다.

다음과 같이 실험 절차는 다음과 같습니다

패키지 simpleFrame 1]. 
 2 
 . java.awt의 3 오기 ;. * 
 4 * 오기 javax.swing의 ;.. 
 5. 
 6 / **. 
 7 * 1.33 2015년 5월 12일 @version. 
 8 * @author 케이 HORSTMANN. 
 9 * /. 
10 Public 클래스 SimpleFrameTest 
11. { 
12 공공 정적 무효 메인 (문자열 []에 args) 인 
(13)는 { 
14 EventQueue.invokeLater (()를 -> // 람다 식 : 스레드 열어 큐 
15 { 
16 SimpleFrame 새로운 새 SimpleFrame 프레임 = (); // 클래스 만들기 개체 
17 frame.setDefaultCloseOperation (의 JFrame.EXIT_ON_CLOSE는) // 타겟 폐쇄 동작 클릭 설정 
(TRUE)을 18 frame.setVisible // 페이지 표시 
19}), 
(20)} 
(21)} 
(22)
는 SimpleFrame 23 인 JFrame의 클래스 확장 
24 { 
25 최종 개인 정적 INT의 DEFAULT_WIDTH = 300; 
26 개인 최종 정적 INT = 200 DEFAULT_HEIGHT이다; 
27 
28 공중 SimpleFrame () // 생성자 
29 { 
30에는 setSize (DEFAULT_WIDTH, DEFAULT_HEIGHT) // 크기 설정 
31 } 
32} 
결과는 다음이다 :

 

 

실험 2 : 시험 절차 2 (6 점)

※ elipse의 IDE 10-2 교과서 프로그램 (412)을 시운전의 평가 프로그램 실행 결과를 바인딩;

상기 방법은 상기 프레임 ※ 파 OK의 속성을 설정하는데 사용.

다음과 같이 실험 절차는 다음과 같습니다

패키지 simpleFrame 1]. 
 2 
 . java.awt의 3 오기 ;. * 
 4 * 오기 javax.swing의 ;.. 
 5. 
 6 / **. 
 7 * 1.34 2015년 6월 16일 @version. 
 8 * @author 케이 HORSTMANN. 
 9 * /. 
10 Public 클래스 SizedFrameTest 
11. { 
12 공공 정적 무효 메인 (문자열 []에 args) 인 
(13)는 { 
14 EventQueue.invokeLater (() -> // 람다 식 : 스레드 열어 큐 
15 { 
16 새로운 새 SizedFrame JFrame에 프레임 = (); // 프레임을 만들기 클래스 오브젝트 
17 frame.setTitle ( "SizedFrame는"); // 타이틀 세트 
18 frame.setDefaultCloseOperation (의 JFrame.EXIT_ON_CLOSE)를 // 닫기 동작 
19 frame.setVisible (참)을 // 가시성 세트 
(20)}); 
21}
22} 
(42) 이미지 IMG 새로운 이미지 아이콘 ( "icon.gif"를) = 된 GetImage을 ().; 
(23)
24 등급은 SizedFrame JFrame의 연장继承// 
25 { 
26 공용 SizedFrame () //构造器
27 { 
28 //得到屏幕维度
29 
//生成툴킷对象30 키트 키트 Toolkit.getDefaultToolkit = () 
31 규격을 화면 크기 = kit.getScreenSize (); 
32 = INT screenHeight screenSize.height; 
33 = INT screenWidth screenSize.width; 
34 
35 // 집합 프레임의 폭, 높이 및하자 플랫폼 픽 화면 위치 
(36) 
(37)에는 setSize (screenWidth / 2 screenHeight / 2) //尺寸大小
38 setLocationByPlatform (TRUE); 
39 
40 // 프레임 세트 아이콘 
(41) 
(43) setIconImage (IMG);      
44} 
45}
결과는 다음과 같다 :

 

 실험 2 : 시험 절차 3 (6 분)

※ elipse의 IDE에서 교과서 (418) 프로그램 10-3 시운전의 프로그램을 이해하는 결과를 운영 결합;

프레임에서 ※ 이해의 추가 구성 요소;

※ 마스터 사용자 정의 구성 요소를 사용.

다음과 같이 실험 절차는 다음과 같습니다

패키지 simpleFrame 1]. 
 2 
 . javax.swing의 3 오기 * ;. 
 java.awt의 4 오기 * ;.. 
 5. 
 6 / **. 
 7 * 1.33 2015년 5월 12일 @version. 
 8 * @author 케이 HORSTMANN. 
 9 * /. 
10 공용 클래스 NotHelloWorld 
11. { 
12 공공 정적 무효 메인 (문자열 [] 인수)는 
13 {인 
스레드 열어 큐> // 람다 식 - 14 EventQueue.invokeLater (() 
15 { 
16 NotHelloWorldFrame JFrame에 새로운 새로운 프레임 = () 
(17 frame.setTitle. "NotHelloWorld"); // 타이틀 
18 frame.setDefaultCloseOperation (의 JFrame.EXIT_ON_CLOSE)된다 
. 19 frame.setVisible (true로) 
, 20}) 
21이다} 
22이다} 
23 인
24 / ** 
메시지 패널을 포함 25 *는 프레임 
(26) * / 
27 클래스 NotHelloWorldFrame는 JFrame의 //继承연장 
28 { 
29 공용 NotHelloWorldFrame () //构造器
30 { 
//添加窗口31 추가 (새로운 NotHelloWorldComponent ())을 
32 팩 (); 
33} 
34} 
35 
36 / ** 
표시하는 메시지 (37) *는 성분. 
* 38 / 
39 클래스 NotHelloWorldComponent는 JComponent의 연장 
40 { 
41 공공 정적 최종 INT의 MESSAGE_X = 75; 
42 공공 정적 최종 INT의 MESSAGE_Y = 100; 
43 
44 개인 정적 최종 INT의 DEFAULT_WIDTH = 300; 
45 개인 정적 최종 INT의 DEFAULT_HEIGHT = 200;
(46)
47 공공 무효의 paintComponent (그래픽 g) //绘图
48 { 
49 g.drawString ( "아니 안녕하세요, World 프로그램", MESSAGE_X, MESSAGE_Y); 
} 50 
51     
52 공중 치수로 getPreferredSize는 () {새로운 차원 (DEFAULT_WIDTH, DEFAULT_HEIGHT)을 반환; } 
53} 
实验结果如下:

 

 셋째, 테스트 요약 : (19 점)

이번 주 학습, 나는 데이터 구조, 그가 이해할 수있는 이론 클래스 느낌의 지식을 달성하기 위해 자바 언어를 쉽게 배울하지만, 실제 클래스 A-에 손은 뒤에 배우고, 따라서 자신이 여전히 많은 지식이 모르는이 발견 뿐만 아니라, 코드를 연습 좀 더 책에 비해 몇 가지 세부 사항과 개념을 기억하는 것입니다. 이 과정을 배우려고 노력.

추천

출처www.cnblogs.com/2360689227t/p/11885688.html