目录
类和对象
1、前提概要
2、实现一个软件的过程是什么?
3、类、对象、实例、实例化、抽象
(1)类
①介绍
②类的语法规则
(2)对象
(3)实例
(4)实例化
(5)抽象
4、方法
1、介绍
2、方法的语法规则
5、类的UML图
6、本次例子1搭建流水线(计算平均分,制作歌唱大赛打分系统【去掉最高和最低分,然后求平均值】)
<1>源代码
<2>运行结果
7、本次例子2描述CPU的速度和硬盘容量
<1>源代码
<2>运行结果
之前稍微介入了一点面向对象的概念,重点介绍了面向对象的三个特性“封装”、“继承”、“多态”,我用很通俗的语言重点说明了前两种特性,“封装”就是包装,把源代码包装好,让用他的人知道他到底是干什么用的就可以,不需要让他知道是如何达成需求的;“继承”就是现实世界的继承、传承,子类有父类的特征、特性、方法,同时子类也可以拥有一些自己的东西,而这些东西父类并没有;“多态”就是,一堆特性、特点的统一接口。
软件的实现并不是仅仅依靠编程就可以的,软件的现实是先分析,再设计,最后在编程。这里涉及到了软件工程的相关知识。
首先,类是一个不存在的事物,也可以是它就不是个东西,他只是一个概念,就像动物类、书类,它们没办法代表任意一本书,或者一个动物,就像在生物中的分类法里有“界、门、纲、目、科、属、种...”这些都是类,他只是一个人类大脑思考所总结出来的模板,而在这个模板中它所描述的是一个共同特征。举一个很简单的例子,在学生时期老师总是说“有些同学啊!败坏校风班风,铤而走险上课吃辣条!”这里老师所说的“有些同学”就是一个类,它所描述的是一个特征“上课吃辣条”,它代表的是具有这一特征的所有实体。
public class 类名{ //属性 public [static void] 特点1(){//方法(描述行为动作) } public [static void] 特点2(){ } ..... }
520、521刚过去,可不敢说对象不是个东西,会挨打的!!对象是一个真实存在的个体,他具备一些属性、特征等,都是类赋予他的。
实例就是对象的另一个称呼。这里就涉及了解三种变量,实例变量、成员变量和局部变量。实例变量在某种意义上就是成员变量,他们定义在方法体外,可以被给予默认值,他们的存在就像上个世纪的大学生,当时的大学生是有工作分配的,可见这两个变量地位、权力非同一般,他们可以作用于这一面的整个程序,但是对成员变量的操作只能在方法体中。而局部变量就像保密员,一旦出了大括号,方法体就不认识了,想在大括号、方法体外去调用局部变量,那是不可能的,同时他们没有默认值,必须由程序员手动赋值。
它代表通过类这个模板创建对象的过程。例如上面说到学生时代,老师会说“有些同学啊!败坏校风班风,铤而走险上课吃辣条!尤其是张三!”张三就是这个“吃辣条”类的实例化。、
抽象的意思就是多个对象具有的共同特征,进行总结思考抽取共同特征的过程。例如在学生时代张三上课玩手机、李四上课玩手机、王二麻子上课也玩手机,老师就会说“你们这些上课玩手机的学生,放学把你们家长叫过来我办公室喝喝茶。”所以“张三”、“李四”、“王二麻子”就被抽象成了“上课玩手机的学生”。
总结一下类=属性+方法。
类、对象(实例)、实例化、抽象之间的关系就如下图:
方法就像C语言中所谓的函数,它由方法体和方法头构成
方法头{ 方法体; }
UML (Unified Modeling Language Diagram, UML)图属于结构图,常被用于描述一个系统的静态结构。一个UML中通常包含类(Class)的UML图、接口(Interface)的UML图、泛化关系(Generalization)的UML图、关联关系(Association) 的UML图、依赖关系( Dependency) 的UML图和实现关系(Realization)的UML图。
//搭建流水线,计算分数评定程序,去掉一个最高分一个最低分,然后算平均分 import java.util.Scanner; import java.util.Arrays; class Input{ Del dele; Input(Del d){ dele=d; } void input(){ System.out.println("请输入评委个数:"); Scanner s=new Scanner(System.in); int count=s.nextInt(); System.out.println("请输入评委分数:"); double a[]=new double[count]; for(int i=0;i<a.length;i++){ a[i]=s.nextDouble(); } dele.del(a); } } class Del{ ComputerAverage com; Del(ComputerAverage c){ com=c; } void del(double a[]){ Arrays.sort(a); double b[]=new double[a.length-2]; for(int i=0;i<b.length;i++){ b[i]=a[i+1]; } com.average(b); } } class ComputerAverage{ double sum; void average(double b[]){ for(int i=0;i<b.length;i++){ sum=sum+b[i]; } double aver=sum/b.length; System.out.println("选手最后得分为:"+aver); } } class Line{ Input one; Del two; ComputerAverage three; Line(){ three=new ComputerAverage(); two=new Del(three); one=new Input(two); } void giveScore(){ one.input(); } } public class Experiment06{ public static void main(String args[]){ Line line=new Line(); line.giveScore(); } }
//CPU简介 class PC{ CPU cpu; HardDisk HD; void setCPU(CPU c){ cpu=c; } void setHardDisk(HardDisk h){ HD=h; } void show(){ System.out.println("CPU的速度为:"+cpu.getSpeed()); System.out.println("硬盘容量为:"+HD.getAmount()); } } class CPU{ int speed; void setSpeed(int m){ speed=m; } int getSpeed(){ return speed; } } class HardDisk{ int amount; void setAmount(int m){ amount=m; } int getAmount(){ return amount; } } public class Experiment05{ public static void main(String args[]){ CPU cpu=new CPU(); cpu.setSpeed(2200); HardDisk disk=new HardDisk(); disk.setAmount(200); PC pc=new PC(); pc.setCPU(cpu); pc.setHardDisk(disk); pc.show(); } }
今天的文章到此结束,祝520、521的你们百年好合,永远幸福!