发表于: 2017-08-05 03:47:59

8 1099


一 今天做的事情

完成了第五章的本章练习。(题目用蓝色加粗字体)

1.编写一个学生类,提供name、age、gender、phone、address、email成员变量,且为每个成员变量提供setter、getter方法。为学生类提供默认的构造器和带所有成员变量的构造器。为学生类提供方法,用于描绘吃、喝、玩、睡等行为。

代码如下:

public class EX1

{

public static void main(String[] args)

{

Student s = new Student("张小虎", 19 , '2' ,"110" , "虚空" , "no");

s.play();

System.out.println(s.name);

System.out.println(s.age);

System.out.println(s.gender);

System.out.println(s.phone);

System.out.println(s.address);

System.out.println(s.email);

}

}

class Student//类名首字母大写

{

String name ;//= "邱晓宇" ; //变量名首单词首字母小写,其余单词首字母大写

int age = 18 ;

char gender = '3' ;

String phone = "7758521" ;

String address = "幸福区希望路开心小区6666号" ;

String email = "1234@qq.com" ;

public Stdent(String name)//默认的构造器

{

this.name = name ;

}

public Student(String name , int age , char gender , String phone , String address , String email)

{//带所有成员变量的构造器

this.name = name ;

this.age = age ;

this.gender = gender ;

this.phone = phone ;

this.address = address ;

this.email = email ;

}

public void setName(String name)

{

this.name = name ;

}

public String getName()

{

return this.name;

}

public void setAge(int age)

{

this.age = age ;

}

public int getAge()

{

return this.age;

}

public void setGender(char gender)

{

this.gender = gender ;

}

public char getGender()

{

return this.gender;

}

public void setPhone(String phone)

{

this.phone = phone ;

}

public String getPhone()

{

return this.phone;

}

public void setAddress(String address)

{

this.address = address ;

}

public String getAddress()

{

return this.address;

}

public void setEmail(String email)

{

this.email = email ;

}

public String getEmail()

{

return this.email;

}

public void  eat()

{

System.out.println("吃吃吃!");

}

public void drink()

{

System.out.println("喝喝喝!");

}

public void play()

{

System.out.println("玩玩玩!");

}

public void sleep()

{

System.out.println("和谁睡啊?");

}

}

写程序的时候感觉到了看书上的程序和自己写的程序的差别:书上的程序一般没有错误,自己的程序一般有错误。编译有错误没什么,多编,多遇到错误多解决错误就行了。下面是一个比较,相当低级的错误:

查了半天查到构造器的名字拼错了。低级幼稚。


2.利用第1题定义的Student类,定义一个Student[]数组保存多个Student对象作为通讯录数据,程序可通过name、email、address查询,如果找不到数据,则进行友好提示。

分析:数组的元素的数据类型必须一致,而我上面定义的age、gender和其余的变量一共用了三种数据类型。怎么办?只保存String类型的对象。感觉这个用数据库会好一点。另外感觉题目中的数组是二维数组,一行为一条数据,可以设置name、email、address为关键字,通过关键字来查询。

如不用后面的数据库用前面的知识来解题的话没有多大意义:定义一个二维数组,手动给数组赋值,查询就是判断在name这一列有没有符合的,然后返回结果。不用写就感觉很无聊。跳过。


3.定义普通人、老师、班主任、学生、学校这些类,提供适当的成员变量、方法用于描述其内部数据和行为特征,并提供主类使之运行。要求有良好的封装性,将不同的类放在不同的包下面,增加文档注释,生成API文档。

做的时候感觉很简单,但是真正做的时候碰到了各种各样的问题。

定义这些类很快就完成了,题目要求将不同的类放在不同的包下面,这点难到我了。没办法,题目就是产品经理,人家就要实现这个功能,那就做吧。重新翻看了前面的package和import,一次一次得编译错误,一次一次地修改,直到在CMD运行时打印出“按任意键继续...”,很有屡败屡战的味道。在程序里我用到了继承,班主任继承老师,老师继承普通人,如果父类的包没有做好,在编译子类的时候就不能通过。

直到最后,运行主类时出现了这个错误:

找不到或无法加载主类。自从配置好环境变量后就很少,基本没有,从来没有看到这个错误了。在网上各种搜啊:

完美解决,源程序如果有包,那运行(javac)要加上包名。

做完这些有了做项目的感觉,每个实现不同功能的类打包封装,程序模块化处理。

希望师兄不要嘲笑我,尽管代码很少,尽管注释相当简陋,但是毕竟这是我第一次使用package。

主类代码:(代码略长不好截屏)

package maiclass;

import commomclass.Common;

import teacherclass.Teacher;

import classteacherclass.classTeacher;

import studentclass.Student;

import schoolclass.School;

/**

 *需求:定义普通人、老师、班主任、学生、学校这些类,提供适当的成员变量、方法用于描述其内部数据和行为特征, 

 *并提供主类使之运行。要求有良好的封装性,将不同的类放在不同的包下面,增加文档注释,生成API文档。

 */

public class mainClass 

{

public static void main(String[] args)

{

/**

*主类,创建了五个类的实例,并调用方法运行。

*/

Common people1 = new Common();

people1.work(7);

Teacher teacher1 = new Teacher();

teacher1.teaching();

teacher1.amusement();

classTeacher teacher2 = new classTeacher();

teacher2.admClass();

Student student1 = new Student();

student1.exam();

School school1 = new School();

school1.speak();

}

}

生成API文档:


4.改写第1题的程序,利用组合来实现类复用。

分析:告诉我吃喝玩睡这四个方法有什么可以复用的。。每个方法里就只有一句打印语句。果断跳过这题。当然作者的出发点是好的,让我们多练习练习组合复用。


5.定义交通工具、汽车、火车、飞机这些类,注意它们的继承关系,为这些类提供超过3个不同的构造器,并通过初始化块提取构造器中的通用代码。

分析:不用说我也知道得用到继承。作者你咋不出点间接继承的呢?间接继承个两次三次的。

程序写好编译一下跳出了12个错误,一个一个改,11,10,7,2,1,1,请按任意键继续...

代码:

public class EX5

{

public static void main(String[] args)

{

Transport tra = new Transport();

System.out.println("Transport类初始化数据:" + "满员人数=" + tra.fullNum + ",燃料=" + tra.fule + ",轮胎数=" + tra.wheel + ",颜色=" + tra.colour);

Car car1 = new Car(40,"法拉利");

System.out.println("Car类初始化数据:" + "满员人数=" + car1.fullNum + ",类型=" + car1.carType);

Train train1 = new Train(200 , "煤球" , false);

System.out.println("Train类初始化数据:" + "满员人数=" + train1.fullNum + ",燃料=" + train1.fule + ",是否准时=" + train1.onTime);

Plane plane1 = new Plane(100 , "地沟油" , 6 , 12);

System.out.println("Plane类初始化数据:" + "满员人数=" + plane1.fullNum + ",燃料=" + plane1.fule + ",轮胎数=" + plane1.wheel + ",空姐人数=" + plane1.waiterNum);

}

}

class Transport

{

int fullNum = 100 ;

String fule = "地沟油" ;

int wheel  = 4 ;

String colour = "中国红" ;

public Transport()

{

}

public Transport(int fullNum)

{

this.fullNum = fullNum ;

}

public Transport(int fullNum , String fule)

{

this.fullNum = fullNum ;

this.fule = fule ;

}

public Transport(int fullNum , String fule , int wheel)

{

this.fullNum = fullNum ;

this.fule = fule ;

this.wheel = wheel ;

}

public Transport(int fullNum , String fule , int wheel , String colour)

{

this.fullNum = fullNum ;

this.fule = fule ;

this.wheel = wheel ;

this.colour = colour ;

}

}

class Car extends Transport

{

String carType = "SUV";

public Car(int fullNum , String carType)

{

super(fullNum);

this.carType = carType ;

}

}

class Train extends Transport

{

boolean onTime = false ;

public Train(int fullNum , String fule , boolean onTime)

{

super(fullNum , fule);

this.onTime = onTime ;

}

}

class Plane extends Transport

{

int waiterNum = 10 ;

public Plane(int fullNum , String fule , int wheel ,int waiterNum)

{

super(fullNum , fule , wheel);

this.waiterNum = waiterNum ;

}

}

二 明天做的事情:

开始第六章。

(感觉也不是明天了,现在已经是"明天了")。


返回列表 返回列表
评论

    分享到