类,对象和包

2018.8.27学习笔记

类,对象和包


1.结构化编程和面向对象编程

1)结构化编程(面向过程):在程序设计的早期,程序用流程图和自顶向下的方法设计。采用这种设计方法,程序员会将一个大的问题分解成更小的任务,然后为每个更小的任务编写一个过程(或函数)。最后,程序员会编写一个主过程来启动程序流程,随后根据程序流程走向,调用想要的其它过程。这种类型的程序设计被称为结构化编程。
结构化的解决方案:假如某个公司想让我们编写一个发工资的程序。该公司的员工是每周发一次工资,但是员工薪酬体制有所不同:有些员工的工资按照日薪制,根据每周工作时间来计算报酬;某些员工的工资是固定的年薪。此外,还要计算工资中要扣除的社保、医保以及所得税。

如果我们用结构化编程方式来编写程序,那么程序中就要为发工资的任务编写很多过程。例如,我们可以编写一个称为computePay()的过程,来输入一个员工的薪资数据,并返回其工资。还可以编写称为computeMedicareTax()、computeSSTax()的过程计算医疗保险、社保等等。每个过程需要员工的数据传递进来。例如,如果想调用computePay()过程,我们需要将员工的报酬信息(例如工作时间、时薪)传递进来。数据在过程之间传递,这是结构化编程中经常发生的。过程更改传递进来的数据,返回数据给调用它的过程。

随着员工发工资程序的发展,为了让每项工作顺利开展,我们将会发现需要添加和更改过程。例如,开始编写computePay()过程时,我们会发现有两种不同类型的员工:拿时薪的员工和拿年薪的员工。在这种情况下,我们需要写两个computePay()过程,一个针对拿时薪的员工,另一个针对拿年薪的员工。

2)面向对象编程(面向对象):OOP
(Object Oriented Programming,简称OOP)采用了一种完全不同的方法来开发计算机应用程序。在这种方法中,程序不是围绕着要解决的任务来设计,而是围绕着要解决的问题中的对象来设计。对于每个对象,我们会编写一个类来描述对象的属性和行为。类是对象的描述。同样,对象是类的实例。

对象由属性和行为组成

属性是对象所具有的特征,而行为是对象可以做的动作

对象的每个属性被表示为类中的一个成员变量。对象的每个行为成为类中的一个方法。

面向对象的解决方案对象可以是问题域中出现的任何人、事物或者实体,简单点说就是“东西”。在发工资示例中,我们要给员工发工资,所以员工(Employee)就是对象。员工为公司工作,所以公司是另一个对象。在更深入地分析后,我们也许会发现发工资的部门也是一个对象。在开始编写程序后,我们会发现在初始设计中不太明显的其它对象。
在已经找到问题域中的对象后,我们就要编写一个类来描述每个对象的属性和行为。例如,我们将需要一个Employee类来容纳一个员工的属性和行为。
一个Employee对象的属性是指员工有什么,例如,姓名、地址、雇员号、社保号等等。每个属性将用Employee类中的一个成员变量来代表。
一个Employee对象的行为是员工对象可以做什么,或者我们想这些对象做什么。员工可以做很多事情,但是对于发工资程序来说,我们只需要能计算他们的报酬,然后每周给他们邮寄一个发薪水的支票。这些想要的行为就成为Employee类中的方法。
对于公司中的每个员工,我们实例化一个Employee对象。如果有50个员工,就需要50个Employee对象。在内存中,就有50个姓名、地址、薪水等等。每个员工可以通过一个引用类型的变量来区分,这样我们就需要50个引用变量。在后面,我们将看到如何实例化一个对象,并将一个引用赋值给它。

注意:面向对象和面向过程没有谁比谁好,要看在相同情况下,谁比谁使用的更好一些!

如下图:

这里写图片描述
(图片仅供参考,不能用于其他用途)

在结构化编程中,程序围绕着要解决的任务来设计。
面向对象编程中,程序围绕着问题域中的对象来设计。对象因我的    关注而存在。
类是对象的抽象,对象是类的实例!

2.Java类
1)书写Java
public class Employee{ }
Java中的类用关键字class,Java源代码文件只能包含——公用(public)类,文件名必须与公用类的类名相同,文件扩展名为“.java”。
2)向类中添加成员变量
(1)访问修饰符;
(2)数据类型;
(3)成员变量名称;

 类有属性    

3)方法的行为
(1)访问修饰符
(2)返回值
(3)方法名称,必须是一个有效的标识符(“小驼峰命名”)
(4)参数列表,在括号中出现
(5)方法的定义
3.实例化对象
1)创建好类后,接下类通过类产生对象。

2)对象在内存中得存放
字符串不能用强制转换
3)对象的销毁
产生了对象,用完以后,自然关心关心它的销毁。
(1)如果一个对象没有任何引用,那么就具备了被垃圾回收机制(GC)回收的条件
(2) 如果我们想主动通知垃圾回收机制回收一个对象,只需要:对象=null;

4.理解this引用
1)每个对象都有一个隐含的this变量,它可以访问类的所有信息。
2)this代表对当前类的对象的引用
要访问一个对象成员变量或方法就必须有一个对该对象的引用。但是,在computerPay()方法中,我们并没有用一个引用来访问salary,仅仅用了salary变量。这是因为编译器知道computerPay()正在访问salary成员变量,编译器会为我们添加上引用。
public double computerPay(){
return salary/52
}
等效于:
public double computerPay(){
return this.salary/52;
}
5.掌握如何使用包组织类。
1)在项目开发中,我们通常会编写数目众多的类。如果不对这些类进行分门别类的使用和存放,就像我们不使用文件夹去管理众多的文件一样,在使用时会很困难和不方便,也很容易出现类的命名冲突问题。
2)Java通过引入包(package)的机制,以解决这两个问题。在Java中,每个类属于
一个包。
(1)提供了一个组织类的机制;
(2)为包中的类提供了一个命名空间。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43039219/article/details/82117349