第一篇:Java面向?qū)ο缶幊塘?xí)題總結(jié)大全
第一章
面向?qū)ο箝_發(fā)方法概述
1.面向?qū)ο蟮能浖_發(fā)有哪些優(yōu)點(diǎn)?
1)
把軟件系統(tǒng)看成是各種對(duì)象的集合,這更接近人類的自然思維方式。
2)
軟件需求的變動(dòng)性往往是功能的變動(dòng),而功能的執(zhí)行者——對(duì)象,一般不會(huì)有多大的變化,比結(jié)構(gòu)化更穩(wěn)定。
3)
對(duì)象包括屬性和行為,對(duì)象把數(shù)據(jù)及方法的具體實(shí)現(xiàn)方式一起封裝起來,使得方法與之相關(guān)的數(shù)據(jù)不再分析,提高了每個(gè)子系統(tǒng)的相對(duì)對(duì)立性,從而提高軟件的可維護(hù)性。
4)
支持封裝,抽象,繼承和多態(tài)。提高了軟件的可重用性,可維護(hù)性和可擴(kuò)展性。
2.在軟件系統(tǒng)中,為什么說一個(gè)孤立的不對(duì)外提供任何服務(wù)的對(duì)象是沒有意義的?
1)
每個(gè)對(duì)象都具有特定的功能,相對(duì)于其他對(duì)象而言,它的功能就是為其他對(duì)象提供的服務(wù)。
2)
從使用者角度出發(fā),整個(gè)軟件系統(tǒng)就是一個(gè)服務(wù)的提供者。
3)
在系統(tǒng)內(nèi)部,每個(gè)子系統(tǒng)也都是服務(wù)的提供者,它們其他子系統(tǒng)提供服務(wù)。
4)
因此說一個(gè)孤立的部隊(duì)為提供任何服務(wù)的系統(tǒng)是美歐任何意義的。
3.列舉一些現(xiàn)實(shí)生活中的例子,來說明什么是依賴關(guān)系、什么是聚集關(guān)系,以及什么是關(guān)聯(lián)關(guān)系。
1)
關(guān)聯(lián)關(guān)系:關(guān)聯(lián)是指類之間的特定對(duì)應(yīng)關(guān)系,可以分為單向關(guān)聯(lián)和雙向關(guān)聯(lián),也可以分為一對(duì)一關(guān)聯(lián)、一對(duì)多關(guān)聯(lián)以及多對(duì)多關(guān)聯(lián)。A關(guān)聯(lián)B,是指Class A與Class B之間存在特定的對(duì)應(yīng)關(guān)系。舉例如學(xué)生和老師,訂單和客戶。
2)
依賴關(guān)系:類之間的調(diào)用關(guān)系。A依賴B,Class A訪問Class B提供的服務(wù)。如Panel與Shape的關(guān)系。
3)
聚集關(guān)系:是整體與部分之間的關(guān)系
4.列舉一些顯示生活中的例子,來說明什么是封裝,什么是接口。
1)
接口:對(duì)象中所有向使用者公開的方法的聲明構(gòu)成了對(duì)象的接口。
2)
封裝:隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅僅對(duì)外公開接口。
3)
接口的優(yōu)點(diǎn):a.提高系統(tǒng)之間松散耦合b.提高了系統(tǒng)的可擴(kuò)展性。
4)
封裝的有點(diǎn):
a.便于使用者正確、方便地理解和使用系統(tǒng),防止使用者錯(cuò)誤修改系統(tǒng)的屬性。
b.有助于建立各個(gè)系統(tǒng)之間的松耦合關(guān)系,提高系統(tǒng)的獨(dú)立性。
c.提高軟件的可重用性,沒個(gè)系統(tǒng)都是一個(gè)相對(duì)獨(dú)立的整體,可以在多種環(huán)境中得到重用。
d.降低構(gòu)建大型系統(tǒng)的風(fēng)險(xiǎn),即使整個(gè)系統(tǒng)不成功,個(gè)別的獨(dú)立子系統(tǒng)有可能依然有價(jià)值。
5.抽象的最主要特征是什么?
抽象是指從特定角度出發(fā),從已經(jīng)存在的一些事物中抽取我們所關(guān)注的特性,形成一個(gè)新的事物的思維過程。
6.在建立對(duì)象模型時(shí),要經(jīng)歷哪些抽象思維過程?
1)
從問題領(lǐng)域的事物到軟件模型中對(duì)象的抽象。
2)
從對(duì)象到類的抽象。
3)
從子類到父類的抽象
7.類就是程序員自定義的類型。這種說法是否正確?
不正確,類是一組具有相同屬性和行為的對(duì)象的抽象。類及類的關(guān)系構(gòu)成了對(duì)象模型的主要內(nèi)容。開發(fā)人員需要根據(jù)先識(shí)別對(duì)象,然后再進(jìn)行分類(創(chuàng)建任意的數(shù)據(jù)模型)的思路來建立對(duì)象模型。
8.小王本來體重70kg,經(jīng)過減肥,體重降到45kg,試從這個(gè)問題領(lǐng)域中識(shí)別對(duì)象、類、屬性、狀態(tài)和狀態(tài)的變化。
1)
類:人。
2)
對(duì)象:小王。
3)
屬性:體重。
4)
狀態(tài):70kg。
5)
狀態(tài)的變化:小王的減肥行為導(dǎo)致體重下降。
9.在UML圖中哪些框圖描述了系統(tǒng)的動(dòng)態(tài)結(jié)構(gòu),哪些框圖描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)?
1)
用例圖、類框圖、組件圖、部署圖構(gòu)成了系統(tǒng)的靜態(tài)模型。
2)
狀態(tài)轉(zhuǎn)換圖、時(shí)序圖、協(xié)作圖則構(gòu)成了系統(tǒng)的動(dòng)態(tài)模型。
第二章
第一個(gè)Java應(yīng)用
1.把一個(gè)類放在包里有什么用?
答:把類分包的作用:
(1)
能夠區(qū)分名字相同的類
(2)
有助于實(shí)施訪問權(quán)限控制
(3)
有助于劃分和組織Java應(yīng)用中的各個(gè)類
2.JavaDoc文檔是不是為軟件的終端用戶提供的使用指南?
答:不是的,JavaDoc文檔是供Java開發(fā)人員閱讀的,他們通過JavaDoc文檔來了解其他開發(fā)人員開發(fā)的類的用法。Java開發(fā)人員應(yīng)該養(yǎng)成經(jīng)常閱讀JavaDoc文檔的良好習(xí)慣。
3.對(duì)于com.abc.dollapp.AppMain類,使用以下命令進(jìn)行編譯,編譯出來的.class文件位于什么目錄下?
java –d C:classes –sourcepath C:src C:srccomabcdollappAppMain.java
答:將會(huì)存放在C:classescomabcdollapp下。
4.對(duì)于以上編譯出來的AppMain類,以下哪個(gè)java命令能正確運(yùn)行它?
(a)
java C:classescomabcdollappAppMain.class
(b)
java –classpath C:classes AppMain
(c)
java –classpath C:classescomabcdollapp AppMain
(d)
java –classpath C:classes com.abc.dollapp.AppMain
答:(b)
5.以下哪些main()方法的聲明能夠作為程序的入口方法?
(a)
public static void main()
(b)
public static void main(String[] string)
(c)
public static void main(String args)
(d)
static public int main(String[] args)
(e)
static void main(String[] args)
答:(b),主函數(shù)必須以public static void形式存在,參數(shù)必須為String數(shù)組形式。
6.假定以下程序代碼都分別放在MyClass.java文件中,哪些程序代碼能夠編譯通過?
(a)
import java.awt.*;package Mypackage;
class MyClass{};
(b)
package MyPackage;
import java.awt.*;
class MyClass{};
(c)
/*This is comment*/
package MyPackage;
import java.awt.*;
public class MyClass{};
答:(c),程序順序必須按照import, package, class走,源文件必須以public類型的類命名。
7.對(duì)于以下Myprog類,運(yùn)行命令”java Myprog good morning”,將會(huì)得到打印結(jié)果?
public class Myprog {
public static void main(String argv[])
{
System.out.println(argv[2]);
} }
答:打印結(jié)果為空。argv[0] = “good”, argv[1] = “morning”。
8.下面哪些是Java的關(guān)鍵字?
(a)
default
(b)
NULL
(c)
String
(d)
throws
(e)
long
(f)
true
答:(a),(d),(e),(f),java中所有的關(guān)鍵字都是小寫。
9.當(dāng)AppMain類的main()方法創(chuàng)建了5個(gè)Doll對(duì)象時(shí),運(yùn)行時(shí)數(shù)據(jù)區(qū)的數(shù)據(jù)如何分布的?參考2.4節(jié)的圖2-13,畫出此時(shí)運(yùn)行時(shí)數(shù)據(jù)區(qū)的狀態(tài)圖。
運(yùn)行時(shí)數(shù)據(jù)區(qū)(內(nèi)存)
Java棧區(qū)
執(zhí)行main()方法的主線程的方法調(diào)用棧
局部變量beibei
局部變量jingjing
局部變量huanhuan
局部變量yingying
局部變量nini
堆區(qū)
Doll實(shí)例
name:貝貝
Doll實(shí)例
name:晶晶
Doll實(shí)例
name:歡歡
Doll實(shí)例
name:迎迎
Doll實(shí)例
name:妮妮
方法區(qū)
Doll類型信息
AppMain類型信息
(包含main()方法信息)
10.下面哪些是合法的Java標(biāo)識(shí)符?
(a)
#_pound
(b)
_underscore
(c)
5Interstate
(d)
Interstate5
(e)
_5_
(f)
class
答:(b),(d),(e)標(biāo)識(shí)符命名規(guī)則如下:
(1)
標(biāo)識(shí)符首字母必須為字母、下劃線“_”、美元“$”、人民幣“¥”(2)
標(biāo)識(shí)符由數(shù)字、大寫字母、小寫字母、下劃線以及美元等組成
(3)
不能把關(guān)鍵字和保留字作為標(biāo)識(shí)符
(4)
標(biāo)識(shí)符沒有長(zhǎng)度的限制
(5)
標(biāo)識(shí)符是大小寫敏感的第三章
數(shù)據(jù)類型和變量
1.對(duì)于以下程序,運(yùn)行“java Abs”,將得到什么打印結(jié)果?
public class Abs
{
static int a = 0x11;
//十六進(jìn)制
static int b = 0011;
//八進(jìn)制
static int c = 'u0011';
//十六進(jìn)制數(shù)據(jù)的Unicode字符編碼
static int d = 011;
//八進(jìn)制
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println(“a=”+a);
System.out.println(“b=”+b);
System.out.println(“c=”+c);
System.out.println(“d=”+d);
} }
答:輸出如下
a=17 b=9 c=17 d=9
2.以下哪段代碼能正確編譯通過?
(a)
char a = ?a?;
char b = 1;
char c = 08;
(b)
int a = ?a?;
(c)
long a =?u00FF?;
(d)
char a = ?u0FF?;
(e)
char d = “d”;
答:(b)、(c)能通過編譯。(a)中“char c=08”將int賦值給char需要部分強(qiáng)制轉(zhuǎn)換,“char c=8”就正確;(d)中unicode編碼錯(cuò)誤,java采用的是UCS-2編碼,共16位;(e)字符賦值是使用單引號(hào),字符串String賦值時(shí)才使用雙引號(hào)。
3.下面哪些代碼能編譯通過?
(a)
short myshort=99S;
(b)
String name = ?Excellent tutorial Mr Green?;(c)
char c = 17c;
(d)
int z = 015;
答:(d)可以編譯通過。(a)中char賦值給short需要強(qiáng)制轉(zhuǎn)換;(b)中String類型賦值用雙引號(hào);(c)中int賦值給char需要部分強(qiáng)制轉(zhuǎn)換。
4.字符“A”的Unicode字符編碼為65.下面哪些代碼正確定義了一個(gè)代表字符“A”的變量?
(a)
Char ch=65;
(b)
Char ch=?65?;
(c)
Char ch =?u0041?;
(d)
Char ch=?A?;
(e)
Char ch =”A”
答:(c)、(d)可以得到”A”。(b)的輸出為5,其他無法編譯通過。
5.以下代碼共創(chuàng)建了幾個(gè)對(duì)象?
String s1=new String(“hello”);
String s2=new String(“hello”);
String s3=s1;
String s4=s2;
答:共創(chuàng)建了2個(gè)對(duì)象。棧區(qū)4個(gè)局部變量分別引用了堆區(qū)的2個(gè)實(shí)例,而2個(gè)實(shí)例又引用了工作區(qū)的同一個(gè)類。
6.以下代碼能否編譯通過?假如能編譯通過,運(yùn)行時(shí)將得到什么打印結(jié)果?
class Test {
static int myArg = 1;
public static void main(String[] args)
{
Int myArg;
System.out.println(myArg);
} }
答:無法編譯通過,因?yàn)榫植孔兞縨yArg聲明之后Java虛擬機(jī)就不會(huì)自動(dòng)給它初始化為默認(rèn)值,若在使用前未被初始化,編譯會(huì)報(bào)錯(cuò)。
7.對(duì)于以下程序,運(yùn)行“java Mystery Mighty Mouse”,將得到什么打印結(jié)果?
public class Mystery
{
public static void main(String[] args)
{
Changer c = new Changer();
c.method(args);
System.out.println(args[0]+“ ”+args[1]);
}
static class Changer
{
void method(String[] s)
{
String temp = s[0];
s[0] = s[1];
s[1] = temp;
}
} }
答:打印結(jié)果為“Mighty Mystery”
8.對(duì)于以下程序,運(yùn)行“java Pass”,將得到什么打印結(jié)果?
public class Pass
{
static int j = 20;
public static void main(String[] args)
{
int i=10;
Pass p = new Pass();
p.amethod(i);
System.out.println(“i=”+i);
System.out.println(“j=”+j);
}
public void amethod(int x)
{
x*=2;
j*=2;
} }
答:打印結(jié)果是
i=10 j=40
其中“int x”是傳參,作用域僅在amethod之中。
第四章 操作符
1.以下哪些程序代碼能夠編譯通過?
(a)
int i=0;if(i){
System.out.println(“hello”);}
(b)
boolean b1=true;
boolean b2=true;
if(b1==b2){
System.out.println(“So true”);}
(c)
int i=1;
int j=2;
if(i==1||j==i){
System.out.println(“ok”);}
(d)
int i=1;
int j=2;
if(i==1&|j==i){
System.out.println(“ok”);}
答:(b)、(c)能編譯通過。(a)中int不能作為boolean出現(xiàn),(d)中不能出現(xiàn)&|該操作符。
2.運(yùn)行以下程序,將得到什么打印結(jié)果?
System.out.println(-1>>>1);
System.out.println(-1>>1);
System.out.println(2>>1);
System.out.println(1<<<1);
答:>>>是邏輯右移位操作符,也稱不帶符號(hào)右移位操作符,在移位的過程中二進(jìn)制數(shù)開頭填0;>>是右移位操作符,也稱帶符號(hào)右移位操作符,舍棄末尾,在開頭填符號(hào)位;<<<操作符不存在;
11111111 11111111 11111111 11111111
-1>>>1
01111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111
-1>>1
11111111 11111111 11111111 11111111
00000000 00000000 00000000 00000010
2>>1
00000000 00000000 00000000 00000001
2147483647-1 1
3.以下temp變量最終取值是什么?
long temp =(int)3.9;
temp %= 2;
答:取值為1。
4.以下代碼能否編譯通過?假如能編譯通過,運(yùn)行時(shí)將得到什么打印結(jié)果?
if(5 & 7 > 0 && 5 | 2)System.out.println(“true”);
答:int型不能作為boolean型出現(xiàn)。
5.以下代碼能否編譯通過?假如編譯通過,運(yùn)行時(shí)將得到什么打印結(jié)果?
int output=10;
boolean b1 = false;
if((b1==true)&&((output+=10)==20)){
System.out.println(“We are equal”+output);} else {
System.out.println(“Not equal!”+output);}
答:Not equal!10
6.以下代碼能否編譯通過?假如能編譯通過,運(yùn)行時(shí)將得到什么打印結(jié)果?
int output=10;
boolean b1 = false;
if((b1==true)&((output+=10)==20)){
System.out.println(“We are equal”+output);} else {
System.out.println(“Not equal!”+output);}
答:Not equal!20
7.對(duì)于以下聲明:
String s1=new String(“Hello”);
String s2=new String(“there”);
String s3=new String();
下面哪些是合法的操作?
(a)
s3=s1+s2;
(b)
s3=s1-s2;
(c)
s3=s1&s2;
(d)
s3=s1&&s2;
答:(a)是合法操作。除了“+”能用于字符串的連接以外,其他操作符(如“-”、“&”、“&&”等)都不支持String類型的操作元。
第五章
流程控制
1.運(yùn)行以下代碼,將得到什么打印結(jié)果?
int i = 3;
int j = 0;
double k = 3.2;
if(i < k)
if(i == j)
System.out.println(i);
else
System.out.println(j);
else
System.out.println(k);
答:0
2.以下代碼能否編譯通過?假如能編譯通過,運(yùn)行時(shí)將得到什么打印結(jié)果?
int i = 4;
switch(i){
default:
System.out.println(“default”);
case 0:
System.out.println(“zero”);
break;
case 1:
System.out.println(“one”);
case 2:
System.out.println(“two”);}
答:可以編譯通過,打印結(jié)果是:
default
zero
分析:default可以放在任何位置上,一旦符合一個(gè)case即從頭執(zhí)行到尾,不再判斷case。
3.以下哪些是合法的
(a)
int i;for(i=5, int j=10;i<10;j--){}
(b)
int i,j;for(i=0, j=10;i<10, j>0;i++, j--){}
(c)
int i,k;for(i=0, k=9;(i<10 && k>0);i++, k--){}
(d)
int i,j;for(i=0;j=10;i<10;i++,j--){} 答:(a)for語句中int定義要放在開頭。編譯不通過。
(b)循環(huán)判斷語句不可以用逗號(hào)連接。編譯不通過。
(c)合法。
(d)分號(hào)只能有2個(gè)。
4.運(yùn)行以下代碼,將得到什么打印結(jié)果?
int i = 1;
switch(i){
default:
System.out.println(“default”);
case 0:
System.out.println(“zero”);
break;
case 1:
System.out.println(“one”);
case 2:
System.out.println(“two”);}
答:分析同1,運(yùn)行結(jié)果如下:
one
two
5.以下哪些代碼合法?
(a)
float x=1;
switch(x){
case 1;
System.out.println(“Got a 1”);
}
(b)
long x=1;
switch(x){
case 1;
System.out.println(“Got a 1”);
}
(c)
byte x=1;
switch(x){
case 1/1;
System.out.println(“Got a 1”);
}
(d)
int x=1;
int c=1;
switch(c){
case x;
System.out.println(“Got a 1”);}
(e)
short x=1;
switch(x){
case 3.2/2;
System.out.println(“Got a 1”);
}
(f)
short x=1;
switch(x){
case 1,2,3;
System.out.println(“Got a 1”);
}
答:只有(c)是合法的。
6.以下代碼能否編譯通過?假如能編譯通過,運(yùn)行時(shí)將得到什么打印結(jié)果?
for(int a=0, b=0;a<2;b=++a, System.out.println(“b=”+b)){
System.out.println(“a=”+a);}
答:可以通過編譯,打印結(jié)果:
a=0 b=1 a=1 b=2
7.以下代碼能否編譯通過?假如能編譯通過,運(yùn)行時(shí)將得到什么打印結(jié)果?
int x=0;one:
while(x<10)
{
two:
System.out.println(++x);
if(x>3)
break two;
}
答:不能通過編譯。
第二篇:使用java實(shí)現(xiàn)面向?qū)ο缶幊炭偨Y(jié)
第一章:抽象和封裝
1,為什么使用面向?qū)ο?/p>
1.1:萬事萬物皆對(duì)象,面向?qū)ο缶褪遣捎谩艾F(xiàn)實(shí)模擬”的方法設(shè)計(jì)和開發(fā)程序。
2,使用面向?qū)ο筮M(jìn)行設(shè)計(jì)
2.1:面向?qū)ο笤O(shè)計(jì)三部曲
1,發(fā)現(xiàn)類。
2,發(fā)現(xiàn)類的屬性。
3,發(fā)現(xiàn)類的方法。
經(jīng)驗(yàn):在需求中找出名詞的方式確定類和屬性,找出動(dòng)詞的方式確定方法。
3,創(chuàng)建類的對(duì)象
1,通過構(gòu)造方法來創(chuàng)建對(duì)象
2,通過對(duì)象名.屬性名的方式調(diào)用屬性。
3,通過對(duì)象名.方法名的方式調(diào)用方法。
4,Static可以用來修飾屬性,方法和代碼塊。Static修飾的變
量屬于這個(gè)類所有。即由這個(gè)類創(chuàng)建的所有對(duì)象共有同一個(gè)static變量。類屬性,類方法可以通過類名和對(duì)象名訪問,勢(shì)力屬性,實(shí)例方法只能通過對(duì)象名訪問。
5,在方法里不可以定義static變量,類變量不能是局部變量。6,構(gòu)造函數(shù)的重載
1,構(gòu)造方法的名字和類名相同,沒有返回值類型。構(gòu)造
方法的作用主要就是在創(chuàng)建對(duì)象是執(zhí)行一些初始化操作,賦值。
2,在沒有給類提供任何構(gòu)造方法時(shí),系統(tǒng)會(huì)提供一個(gè)無
參的方法體為空的默認(rèn)構(gòu)造方法。一旦提供了自定義構(gòu)造方法,系統(tǒng)將不會(huì)提供這個(gè)默認(rèn)構(gòu)造方法,如果要使用她,必須手動(dòng)添加。
3,如果同一個(gè)類中包含了兩個(gè)或兩個(gè)以上方法,它們的方法名相同,方法參數(shù)個(gè)數(shù)或參數(shù)類型不同,則稱該方法被重載。成員方法和構(gòu)造方法都可以重載。
4,構(gòu)造方法沒有返回值類型。如果有,就不是構(gòu)造方法,而是構(gòu)造方法同名的成員方法。
5,封裝
1,封裝是類的三大特性之一,就是將類的狀態(tài)信息隱
藏在內(nèi)部。
2,封裝的具體步驟:為每個(gè)屬性創(chuàng)建一對(duì)一賦值,在賦值方法中,加入對(duì)屬性的存取控制語句。
3,隱藏類的實(shí)現(xiàn)細(xì)節(jié),讓使用者只能通過程序員規(guī)定的方法來訪問數(shù)據(jù),可以方便地加入存取控制語句,限制不合理操作。
第三篇:面向?qū)ο缶幊痰目偨Y(jié)
面向?qū)ο缶幊痰目偨Y(jié)(理解與看法)面向?qū)ο蟪绦蛟O(shè)計(jì)(Object Oriented Programming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì))是一種計(jì)算機(jī)編程架構(gòu)。OOP 的一條基本原則是計(jì)算機(jī)程序是由單個(gè)能夠起到子程序作用的單元或?qū)ο蠼M合而成。
OOP 達(dá)到了軟件工程的三個(gè)主要目標(biāo):重用性、靈活性和擴(kuò)展性。為了實(shí)現(xiàn)整體運(yùn)算,每個(gè)對(duì)象都能夠接收信息、處理數(shù)據(jù)和向其它對(duì)象發(fā)送信息。
面向?qū)ο笥腥筇匦裕謩e是:封裝、繼承、多態(tài)。封裝是隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外公開接口,控制在程序中屬性的讀和修改的訪問級(jí)別;將抽象得到的數(shù)據(jù)和行為(或功能)相結(jié)合,形成一個(gè)有機(jī)的整體,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進(jìn)行有機(jī)的結(jié)合,形成“類”,其中數(shù)據(jù)和函數(shù)都是類的成員。目的是增強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只是要通過外部接口,以特定的訪問權(quán)限來使用類的成員。任何類都可以從另外一個(gè)類繼承,即這個(gè)類擁有它所繼承類的所有成員。被繼承的類稱為父類或基類。C# 只支持單繼承,不支持多重繼承,即在C# 中一次只允許繼承一個(gè)類,不能同時(shí)繼承多個(gè)類。在C# 中,接口允許多繼承,可以通過繼承多個(gè)接口來實(shí)現(xiàn)類似于C++中的多重繼承。
多態(tài)是同一個(gè)類在不同場(chǎng)合下表現(xiàn)出不同的行為特征。
使用抽象方法與虛方法都可以實(shí)現(xiàn)多態(tài)性。抽象方法是一個(gè)未實(shí)現(xiàn)的方法,使用abstract關(guān)鍵字修飾,含有抽象方法的類必然是抽象類。抽象方法要在其子方法中通過override關(guān)鍵字重寫。
簡(jiǎn)單工廠模式用于在調(diào)用者不知道對(duì)象屬于哪個(gè)自雷的情況下,創(chuàng)建不同的對(duì)象。
第四篇:java面向?qū)ο蟪绦蛟O(shè)計(jì)教案
武漢大學(xué)珞珈學(xué)院 系/教研室 Java 面 向 對(duì) 象 程 序 設(shè) 計(jì) 課 教 案
主講教師:熊春秀 編寫時(shí)間:2011-4-30
第一章:概述
第 1、2 節(jié):面向?qū)ο蟮幕靖拍?、面向?qū)ο蟪绦蛟O(shè)計(jì)概述 授課時(shí)間:2011-2-
22、23
計(jì)劃學(xué)時(shí)數(shù):1 教學(xué)任務(wù)與目的:讓學(xué)生理解面向?qū)ο蟮幕靖拍?教學(xué)重點(diǎn):掌握面向?qū)ο蟮幕靖拍?教學(xué)難點(diǎn):理解面向?qū)ο蟪绦蛟O(shè)計(jì)的方法 教學(xué)方法:多媒體+板書 參考書目:《面向?qū)ο蟪绦蛟O(shè)計(jì)導(dǎo)論》,[美]C.Thomas wu著,電子工業(yè)出版社 專業(yè)詞匯:Java虛擬機(jī)、Applet程序 備注
第二章:Java特點(diǎn)及運(yùn)行環(huán)境
第 1、2、3 節(jié):Java語言特點(diǎn)、Java應(yīng)用程序及運(yùn)行環(huán)境、Java Applet程序及運(yùn)行環(huán)境 授課時(shí)間:2011-2-
22、23
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)JDK的下載、安裝與環(huán)境配置。教學(xué)重點(diǎn):掌握編譯和執(zhí)行Java程序的基本步驟
教學(xué)難點(diǎn):理解Java程序的入口并能夠通過命令行傳遞參數(shù) 教學(xué)方法:多媒體+板書 參考書目:《面向?qū)ο蟪绦蛟O(shè)計(jì)導(dǎo)論》,[美]C.Thomas wu著,電子工業(yè)出版社 專業(yè)詞匯:JDK、lib、bin 備注 第三章:Java語言基礎(chǔ)
第 1、2 節(jié):Java程序的構(gòu)成、數(shù)據(jù)類型、表達(dá)式以及流程控制語句 授課時(shí)間:2011-3-
1、2
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)Java基本的數(shù)據(jù)類型和表示方法、數(shù)值類型的運(yùn)算、邏輯運(yùn)算和比較、條件執(zhí)行語句(包括三種條件語句和switch語句)、循環(huán)控制語句(包括for、while、do while循環(huán)及相應(yīng)的輔助語句)、字符串類String和BufferString以及數(shù)組的聲明及使用。
教學(xué)重點(diǎn):掌握J(rèn)ava基本的數(shù)據(jù)類型和表示方法
教學(xué)難點(diǎn):理解Java程序的循環(huán)控制語句(包括for、while、do while循環(huán)及相應(yīng)的輔助語句)
教學(xué)方法:多媒體+板書 參考書目:《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社 專業(yè)詞匯:變量、數(shù)據(jù)類型、循環(huán)控制語句 備注 第三章:Java語言基礎(chǔ) 第 3 節(jié):Java與C比較
授課時(shí)間:2011-3-
8、9
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生在C語言的基本上進(jìn)一步學(xué)習(xí)Java語言。教學(xué)重點(diǎn):掌握J(rèn)ava語言與C語言的區(qū)別與聯(lián)系。教學(xué)難點(diǎn):理解Java語言在C語言上的改進(jìn)。教學(xué)方法:多媒體+板書 參考書目:《Java2參考大全(第四版)》,[美]Herbert Schildt著,張玉清、吳浦峰、尚勇等譯,清華大學(xué)出版社。專業(yè)詞匯:Java、C 備注 第四章:抽象、封裝與類
第 1 節(jié):抽象、封裝與Java類的概念
授課時(shí)間:2011-3-
15、16
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)面向?qū)ο蟮幕咎卣?、掌握如何定義一個(gè)類以及如何生成對(duì)象、深入掌握方法的定義及技巧、深入掌握類的訪問權(quán)限與封裝機(jī)制、深入掌握包的定義與包的使用方法。
教學(xué)重點(diǎn):掌握類的定義與對(duì)象的生成。教學(xué)難點(diǎn):理解類的抽象與封裝機(jī)制。教學(xué)方法:多媒體+板書 參考書目:《Java2 實(shí)用教程》,耿祥義、張躍平編著,清華大學(xué)出版社。專業(yè)詞匯:抽象、封裝、類 備注 第四章:抽象、封裝與類 第 2 節(jié):系統(tǒng)定義的類
授課時(shí)間:2011-3-
22、23
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)使用系統(tǒng)定義的類,并掌握與用戶自定義類的區(qū)別。教學(xué)重點(diǎn):掌握如何定義所需要的類。
教學(xué)難點(diǎn):熟悉Java平臺(tái)定義了哪些經(jīng)常要用到、而且滿足我們需要的類。教學(xué)方法:多媒體+板書 參考書目:《Java2 實(shí)用教程》,耿祥義、張躍平編著,清華大學(xué)出版社。專業(yè)詞匯:系統(tǒng)定義的類、用戶自定義類 備注 第四章:抽象、封裝與類
第 3 節(jié):類、域和方法的修飾符
授課時(shí)間:2011-3-
29、30
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)類的聲明。
教學(xué)重點(diǎn):掌握如何定義類的修飾和方法的修飾符。教學(xué)難點(diǎn):熟悉類的變量的定義與使用方法。教學(xué)方法:多媒體+板書 參考書目:《Java2 實(shí)用教程》,耿祥義、張躍平編著,清華大學(xué)出版社。專業(yè)詞匯:成員變量、類變量、成員方法、類方法 備注 第五章:繼承與多態(tài)
第 1、2 節(jié):Java的繼承與派生、域的繼承與隱藏 授課時(shí)間:2011-4-
5、6
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生全面掌握面向?qū)ο蟮幕咎卣?、掌握如何使用繼承性來到達(dá)軟件的重用、深入掌握繼承過程中域的隱藏和方法的覆蓋技巧。教學(xué)重點(diǎn):掌握如何使用繼承性來到達(dá)軟件的重用。教學(xué)難點(diǎn):熟悉繼承過程中域的隱藏和方法的覆蓋技巧。教學(xué)方法:多媒體+板書 參考書目:《Java2 實(shí)用教程》,耿祥義、張躍平編著,清華大學(xué)出版社。專業(yè)詞匯:繼承派生、域、隱藏 備注 第五章:繼承與多態(tài)
第 3、4 節(jié):方法的繼承、重載與覆蓋、this與super、構(gòu)造函數(shù)的繼承與重載 授課時(shí)間:2011-4-
12、13
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生通過繼承可以更有效地組織程序結(jié)構(gòu),明確類之間的關(guān)系,并充分利用已有的類來創(chuàng)建新類,通過繼承可以實(shí)現(xiàn)代碼的重用,以完成更復(fù)雜的設(shè)計(jì)、開發(fā)。教學(xué)重點(diǎn):掌握類的重載與覆蓋的區(qū)別與聯(lián)系。教學(xué)難點(diǎn):熟悉類的重載與覆蓋使用方法。教學(xué)方法:多媒體+板書 參考書目:《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:繼承、重載、覆蓋、this、super 備注 第五章:繼承與多態(tài)
第 5、6 節(jié):多態(tài)性的實(shí)現(xiàn)、接口聲明與實(shí)現(xiàn) 授課時(shí)間:2011-4-
19、20
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生深入掌握抽象類和抽象方法的定義,掌握多態(tài)通過統(tǒng)一多個(gè)相關(guān)類的對(duì)外接口,在運(yùn)行時(shí)根據(jù)不同的情況執(zhí)行不同的操作,提高類的抽象度和靈活性,深入掌握接口的定義和使用技巧。
教學(xué)重點(diǎn):熟悉多態(tài)性實(shí)現(xiàn)的兩種方式以及接口的實(shí)現(xiàn)。教學(xué)難點(diǎn):熟悉多態(tài)性與接口的實(shí)現(xiàn)方法。教學(xué)方法:多媒體+板書 參考書目:《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:多態(tài)性、接口 備注 第六章:工具類與算法
第 1、2 節(jié):語言基礎(chǔ)類庫、Applet類與小程序的基本原理 授課時(shí)間:2011-4-
26、27
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:深入了解Applet生命周期的主要方法和特點(diǎn)、熟練掌握Applet程序的編寫方法、深入了解Applet的安全機(jī)制及其合理運(yùn)用。教學(xué)重點(diǎn):熟練掌握Applet程序的編寫方法。
教學(xué)難點(diǎn):深入了解Applet的安全機(jī)制及其合理運(yùn)用。教學(xué)方法:多媒體+板書 參考書目:《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:Applet、生命周期 備注 第六章:工具類與算法
第 3、4 節(jié):數(shù)組、字符串、常用算法
授課時(shí)間:2011-5-
3、4
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)字符串類String和BufferString、數(shù)組的聲明及使用。教學(xué)重點(diǎn):熟練掌握字符串與數(shù)組的使用方法。教學(xué)難點(diǎn):深入了解數(shù)組的使用方法。教學(xué)方法:多媒體+板書 參考書目:《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:數(shù)組、字符串 備注 第七章:用戶圖形界面的設(shè)計(jì)
第 1、2 節(jié):用戶自定義成分、事件驅(qū)動(dòng)設(shè)計(jì) 授課時(shí)間:2011-5-
10、11
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)使用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法構(gòu)建圖形用戶界面、深入了解抽象窗口工具包(AWT)、掌握事件處理基本原理和方法。教學(xué)重點(diǎn):熟練掌握?qǐng)D形用戶界面的開發(fā)方法。教學(xué)難點(diǎn):深入了解圖形界面的各種事件。教學(xué)方法:多媒體+板書 參考書目:《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:AWT、GUI 備注 第七章:用戶圖形界面的設(shè)計(jì)
第 3、4 節(jié):GUI對(duì)象,包括:按鈕、文本框、鼠標(biāo)、鍵盤等事件的處理、布局設(shè)計(jì) 授課時(shí)間:2011-5-
17、18
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生深入了解GUI構(gòu)件及掌握布局控制方法、熟練掌握菜單和對(duì)話框、掌握簡(jiǎn)單繪圖方法。
教學(xué)重點(diǎn):熟練使用Java語言提供的布局管理器來管理組件在容器中的布局。教學(xué)難點(diǎn):深入了解組件在程序中安排中位置和大小使用方法。教學(xué)方法:多媒體+板書 參考書目:《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:布局管理器、容器 備注 第八章:Java高級(jí)編程
第 1、2、3節(jié):異常處理、多線程機(jī)制、Java程序?qū)W(wǎng)上資源的訪問 授課時(shí)間:2011-5-
24、25
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生深入理解多線程的基本概念、熟練掌握創(chuàng)建線程的兩種基本方法、熟練處理線程的同步問題和死鎖問題、深入理解異常的基本概念、熟悉和掌握J(rèn)ava平臺(tái)定義異常類、熟練掌握創(chuàng)建自定義異常類的方法。教學(xué)重點(diǎn):熟練掌握創(chuàng)建線程的兩種基本方法。教學(xué)難點(diǎn):深入了解線程的同步問題和死鎖問題。教學(xué)方法:多媒體+板書 參考書目:《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:同步、死鎖、多線程、異常
第五篇:JAVA面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)大綱
《JAVA面向?qū)ο蟪绦蛟O(shè)計(jì)》課程教學(xué)大綱
Oriented object Programming in JAVA 編號(hào): 08065121
適用專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)、網(wǎng)絡(luò)工程 學(xué)時(shí)數(shù):32 學(xué)分?jǐn)?shù):2 執(zhí)筆者:田小玲 編寫日期:2009年11月
一、課程的性質(zhì)和目的
本課程是為計(jì)算機(jī)科學(xué)與技術(shù)以及網(wǎng)絡(luò)工程專業(yè)本科生開設(shè)的專業(yè)選修課,是一門面向?qū)ο蟮木幊陶Z言,通過本課程的學(xué)習(xí),培養(yǎng)和提高學(xué)生面向?qū)ο蟪绦蛟O(shè)計(jì)的能力和Java語言在web開發(fā)中的應(yīng)用能力。
二、課程教學(xué)內(nèi)容
第一章 面向?qū)ο筌浖_發(fā)概述(2學(xué)時(shí))1.內(nèi)容
面向?qū)ο髥栴}求解的提出、面向?qū)ο髥栴}求解的概述、對(duì)象、類與實(shí)體、對(duì)象的屬性與相互關(guān)系、面向?qū)ο蟮能浖_發(fā)過程、面向?qū)ο蟪绦蛟O(shè)計(jì)方法的優(yōu)點(diǎn)、開發(fā)環(huán)境設(shè)置及開發(fā)工具簡(jiǎn)介。
2.要求
(1)了解:面向?qū)ο筌浖_發(fā)概述,面向?qū)ο蟮能浖_發(fā)過程及面向?qū)ο蟪绦蛟O(shè)計(jì) 方法的優(yōu)點(diǎn)。
(2)掌握:對(duì)象的屬性與相互關(guān)系,對(duì)象、類與實(shí)體的基本概念。(3)熟練掌握:開發(fā)環(huán)境設(shè)置及開發(fā)工具簡(jiǎn)介(補(bǔ)充)。3.重點(diǎn)
對(duì)象、類與實(shí)體的基本概念。
4.難點(diǎn)
面向?qū)ο蟪绦蛟O(shè)計(jì)方法的理解。第二章 Java概述(2學(xué)時(shí))1.內(nèi)容
Java語言的特點(diǎn)、Java虛擬機(jī)及垃圾回收機(jī)制、JDK目錄結(jié)構(gòu)、Java 的API結(jié)構(gòu)及Java程序結(jié)構(gòu)、第一個(gè)Java Application程序、第一個(gè)Java Applet程序、圖形界面的輸入輸出、字符界面的輸入輸出。
2.要求
(1)了解:Java語言的發(fā)展歷史及特點(diǎn),Java Application程序及Java Applet程 序,圖形界面的輸入輸出,字符界面的輸入輸出。
(2)掌握:Java語言實(shí)現(xiàn)機(jī)制(補(bǔ)充),Java體系結(jié)構(gòu)(補(bǔ)充)。(3)熟練掌握:Java Application程序的結(jié)構(gòu)。3.重點(diǎn)
Java Application程序的結(jié)構(gòu)。
4.難點(diǎn)
Java語言實(shí)現(xiàn)機(jī)制。
第三章 Java語言基礎(chǔ)(2學(xué)時(shí))1.內(nèi)容
數(shù)據(jù)類型、變量與常量、表達(dá)式、流程控制語句。2.要求
(1)了解:java語言的發(fā)展。
(2)掌握:數(shù)據(jù)類型、變量與常量的定義及使用。(3)熟練掌握:表達(dá)式的使用,流程控制語句。3.重點(diǎn)
表達(dá)式的使用,流程控制語句。
4.難點(diǎn)
流程控制語句的運(yùn)用。
第四章 抽象、封裝與類(6學(xué)時(shí))
1.內(nèi)容
抽象與封裝、Java的類、類的修飾符、域、方法、訪問控制符。2.要求
(1)了解:抽象、封裝概念,系統(tǒng)定義的類。
(2)掌握:類的修飾符(abstract和final),域(包括靜態(tài)域、靜態(tài)初始化器、最終域和易失域),方法(包括抽象方法、靜態(tài)方法、最終方法)。
(3)熟練掌握:用戶程序自定義類及創(chuàng)建對(duì)象與定義構(gòu)造函數(shù),訪問控制符(包括public、缺省訪問控制符、private、protected)的運(yùn)用。
3.重點(diǎn)
自定義類、創(chuàng)建對(duì)象與定義構(gòu)造函數(shù)。
4.難點(diǎn)
四種訪問控制符的運(yùn)用。第五章 繼承與多態(tài)(4學(xué)時(shí))1.內(nèi)容
Java的繼承、多態(tài)、Java的重載、構(gòu)造函數(shù)的繼承與重載、包及接口的概念。2.要求
(1)了解:繼承及多態(tài)的概念,Java接口的概念。(2)掌握:Java的方法重載,包的創(chuàng)建及引用。(3)熟練掌握:構(gòu)造函數(shù)的繼承與重載。
3.重點(diǎn)
方法的重載、類的繼承。4.難點(diǎn)
屬性的隱藏、方法的覆蓋。第六章 工具類與算法(2學(xué)時(shí))
1.內(nèi)容
語言基礎(chǔ)類庫(包括Object類、數(shù)據(jù)類型類、Math類及System類)、Applet類與Applet小程序、數(shù)組。
2.要求
(1)了解:Applet類與Applet小程序。(2)掌握:Java語言基礎(chǔ)類庫。(3)熟練掌握:數(shù)組的聲明及初始化。3.重點(diǎn)
數(shù)組的聲明及初始化、數(shù)組的應(yīng)用。4.難點(diǎn)
編寫Applet小程序。
第七章 圖形用戶界面的設(shè)計(jì)與實(shí)現(xiàn)(8學(xué)時(shí))
1.內(nèi)容
圖形用戶界面概述、GUI標(biāo)準(zhǔn)組件概述及布局設(shè)計(jì)、Java的事件處理機(jī)制。2.要求
(1)了解:圖形界面組件之間的層次關(guān)系、容器的概念和作用。(2)掌握:圖形用戶界面程序的基本結(jié)構(gòu)。(3)熟練掌握:事件監(jiān)聽機(jī)制。3.重點(diǎn)
圖形用戶界面程序的基本結(jié)構(gòu)。4.難點(diǎn)
Java的事件處理機(jī)制。
第八章 Java高級(jí)編程(6學(xué)時(shí))
1.內(nèi)容
異常處理、Java多線程機(jī)制、Swing GUI 組件、流式輸入輸出與文件處理、用Java實(shí)現(xiàn)底層網(wǎng)絡(luò)通信、Java程序?qū)W(wǎng)上資源的訪問。
2.要求
(1)了解:例外的概念、Java中線程的基本概念、Java的線程類與Runnable接口及如何在程序中實(shí)現(xiàn)多線程、Java輸入輸出類庫及文件的處理與隨機(jī)訪問、使用Java實(shí)現(xiàn)底層網(wǎng)絡(luò)通信、Java程序?qū)W(wǎng)上資源的訪問。
3(2)掌握:例外處理機(jī)制。
(3)熟練掌握:Swing GUI組件的運(yùn)用。3.重點(diǎn)
例外處理機(jī)制、Swing GUI組件的創(chuàng)建。
4.難點(diǎn)
自定義異常類。
三、課程教學(xué)的基本要求
課程教學(xué)的基本要求包含三項(xiàng):上機(jī)環(huán)節(jié)、作業(yè)要求、考試方式。1.上機(jī)環(huán)節(jié)
根據(jù)課堂講授的理論,并結(jié)合上機(jī)操作讓學(xué)生及時(shí)掌握每章節(jié)所學(xué)的知識(shí),通過實(shí)操可加深學(xué)生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的思想及Java程序設(shè)計(jì)的領(lǐng)會(huì)。
2.作業(yè)要求
(1)作業(yè)要求:獨(dú)立思考完成、書寫工整、按時(shí)交(2)作業(yè)量:每次課均布置作業(yè),作業(yè)量約2~3題(3)總作業(yè)量:約30~40道題 3.考試方式
(1)考試方式:閉卷筆試(2)評(píng)定成績(jī)要求:
總成績(jī)=平時(shí)成績(jī)×30%+考試成績(jī)×70%
四、本課程與其它課程的聯(lián)系與分工
1.前期課程:
程序設(shè)計(jì)基礎(chǔ)、計(jì)算機(jī)網(wǎng)絡(luò)、C語言程序設(shè)計(jì)、C++程序設(shè)計(jì) 2.后續(xù)課程:
軟件工程、Web應(yīng)用程序開發(fā)
五、建議教材與教學(xué)參考書
[1] 印旻.《Java語言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,清華大學(xué)出版社 [2] 於東軍,楊靜宇.《Java程序設(shè)計(jì)與應(yīng)用開發(fā)》,清華大學(xué)出版社 [3] 辛運(yùn)幃.《Java程序設(shè)計(jì)》,清華大學(xué)出版社 [4] 姜?jiǎng)?《Java語言程序設(shè)計(jì)》,人民郵電出版社 [5] 閻菲.《Java程序設(shè)計(jì)教程》,中國(guó)水利水電出版社