面向对象基础05综合讲解1.docx
- 文档编号:8962356
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:17
- 大小:1.11MB
面向对象基础05综合讲解1.docx
《面向对象基础05综合讲解1.docx》由会员分享,可在线阅读,更多相关《面向对象基础05综合讲解1.docx(17页珍藏版)》请在冰豆网上搜索。
面向对象基础05综合讲解1
10.面向对象基础(05)
本次课程是习题课程,将之前所学到的各种知识综合应用在题目之中,并进行综合讲解,在讲解的时候为读者提供了解决问题的基本思路。
blog:
[零基础学JAVA]JavaSE面向对象部分-10.面向对象基础(05)
上季内容回顾:
1、类和对象
2、引用的内存分配
3、封装性
4、构造方法
5、String类
6、this关键字
在编写代码之前建立好应该具备的类,之后再为类添加一些属性,属性都是需要被封装的,封装之后必须写setter和getter方法才可以访问属性,如果有需要则可以加入构造方法设置属性。
本季主要知识点:
1、题目讲解
2、如何去分析题目
本次课程是习题课程,将之前所学到的各种知识综合应用在题目之中,并进行综合讲解,在讲解的时候为读者提供了解决问题的基本思路。
分析下这个题目哈~
我们最好先画下类图
类名
属性
方法
属性的表示:
权限属性名称:
类型
-name:
String ==> privateStringname;
方法的表示:
权限方法名称(参数名称:
参数类型,参数名称:
参数类型):
返回值类型
+setName(name:
String):
void ==> publicvoidsetName(Stringname)
用手工画类图会非常麻烦哈,我们可以使用jude这样的工具。
JUDE(JavaandUMLDevelopersEnvironment)1.2.1
在这里,我们新建三个类:
Student,Class_,Out
类我们定义好了后,我们再来定义下类滴属性哈,先Student类定义name、age、score属性。
属性定义后我们就定义其setter和getter方法并设置其参数。
依此类推
然后是班级Class类定义name、de.ion两个属性。
同样设置其setter和getter方法并设置参数。
最后是输出类Out,这个非常简单,只要定义一个print方法就可以了。
最后一张完整的类图就出来了哈~
在这个工具中,可以根据图形生成代码,我们看下面哈~
选择文件----导出Java
选择存放的路径
现在目录中就生成了这三个类文件
我们把它们合并到一个文件中,这样直观一点哈~
验证下效果哈~
修改代码为其加入构造方法
class Student{
private Stringname;
private int age;
private float score;
//修改程序,加入一个构造
public Student(){}
public Student(Stringname,int age,float score){
this.setName(name);
this.setAge(age);
this.setScore(score);
}
public void setName(Stringname){
this.name=name;
}
public StringgetName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}
public void setScore(float score){
this.score=score;
}
public float getScore(){
return this.score;
}
}
class Class_{
private Stringname;
private Stringde.ion;
public Class_(){}
public Class_(Stringname,Stringde.ion){
this.setName(name);
this.setDe.ion(de.ion);
}
public void setName(Stringname){
this.name=name;
}
public StringgetName(){
return this.name;
}
public void setDe.ion(Stringde.ion){
this.de.ion=de.ion;
}
public StringgetDe.ion(){
return this.de.ion;
}
}
class Out{
public void print(Studentstu,Class_cla){
System.out.println("学生姓名:
"+stu.getName());
System.out.println("学生年龄:
"+stu.getAge());
System.out.println("学生成绩:
"+stu.getScore());
System.out.println("班级名称:
"+cla.getName());
System.out.println("班级描述:
"+cla.getDe.ion());
}
}
public class Demo02
{
public static void main(Stringargs[]){
Students= new Student();
s.setName("王乾");
s.setAge(27);
s.setScore(99.9f);
Class_c= new Class_();
c.setName("JAVA强化班");
c.setDe.ion("学习JAVA技术强化班");
new Out().print(s,c);
}
}
加入构造方法后效果怎么样呢?
验证一下哈~
程序我们已经修改了,我们可以将程序代码导入到工具之中,自动生成类图。
首先我们新建一个文件
然后选择导入Java
找到Java程序的路径
单击start
如果属性是两个单词的,则第一个单词的首字母小写,之后每个单词的首字母大写。
/*
1、定义好要使用的类
2、定义好类中的属性
3、为属性封装
4、为封装后的属性设置setter和getter方法
5、如果需要可以为类中添加构造方法
6、为类中添加所需要的其他方法
*/
class Student
{
//学生编号
private Stringstuno;
//学生姓名
private Stringname;
//数学成绩
private float mathScore;
//英语成绩
private float englishScore;
//计算机成绩
private float computerScore;
public Student(){}
public Student(Stringstuno,Stringname,float mathScore,float englishScore,float computerScore){
this.setStuno(stuno);
this.setName(name);
this.setMathScore(mathScore);
this.setEnglishScore(englishScore);
this.setComputerScore(computerScore);
}
public void setStuno(Stringstuno){
this.stuno=stuno;
}
public void setName(Stringname){
this.name=name;
}
public void setMathScore(float mathScore)
{
this.mathScore=mathScore;
}
public void setEnglishScore(float englishScore)
{
this.englishScore=englishScore;
}
public void setComputerScore(float computerScore)
{
puterScore=computerScore;
}
public StringgetStuno(){
return this.stuno;
}
public StringgetName(){
return this.name;
}
public float getMathScore(){
return this.mathScore;
}
public float getEnglishScore(){
return this.englishScore;
}
public float getComputerScore(){
return puterScore;
}
//添加所需要的其他方法
//在编写类的时候一定要记住一个原则:
任何的输出绝对不能在类中完成
//所有要输出的内容在类中只是把值返回来,交给调用处输出
//取得全部成绩的总和
public float getSum(){
return this.mathScore+this.englishScore+puterScore;
}
//取得平均成绩
public float getAvg(){
return this.getSum()/3;
}
//取最高的成绩
public float getMax(){
//三个成绩相比
float max=0.0f;
if (this.mathScore>this.englishScore)
{
max= this.mathScore;
}
else
{
max= this.englishScore;
}
if (max { max= puterScore; } return max; } //取最低的成绩 public float getMin(){ //三个成绩相比 float min=0.0f; if (this.mathScore>this.englishScore) { min= this.englishScore; } else { min= this.mathScore; } if (min>puterScore) { min= puterScore; } return min; } } public class Demo03{ public static void main(Stringargs[]){ Students= new Student(); s.setStuno("s01"); s.setName("王乾"); s.setMathScore(89.8f); s.setEnglishScore(99.0f); s.setComputerScore(88.8f); System.out.println(s.getName()+"的成绩单("+s.getStuno()+"): "); System.out.println("\t|-总成绩: "+s.getSum()); System.out.println("\t|-平均成绩: "+s.getAvg()); System.out.println("\t|-最高成绩: "+s.getMax()); System.out.println("\t|-最低成绩: "+s.getMin()); } }; 测试下效果 一般来说分析面向对象程序的步骤: 1、可以画一些类的草图 2、之后定义每个类中的属性,属性定义完之后必须封装 3、封装的属性如果需要被外部所访问,则肯定必须写setter和getter 4、如果需要在对象实例化时可以为其属性赋初始值,则可以加入构造方法,如果有必要则可以加入多个构造(一个是无参的,其他的是有参的) 5、为类中添加程序所必须的方法 6、进行测试 记住: 开发中main方法就是一个测试端,只在里面写少量的代码即可,不可多写,也可以把main方法称为客户端。 总结 通过这一季的习题练习哈,我们一定要培养面向对象的解决的思路起来哈~~~ ######################################################################### 本文出自“王乾De技术博客”博客,谢绝转载!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 基础 05 综合 讲解