您的位置:首页 > 编程语言 > Java开发

Java基础-面向对象思考

2017-01-09 12:09 274 查看

一、类的抽象

定义

类的抽象(class abstraction):将类的实现和类的实用使用分离开。

类的封装(class encapsulation):实现的细节经过封装,对用户隐藏起来。

类的合约(class’s contract):从类外可以访问方法和数据域的集合以及预期这些成员如何行为的描述。

类的抽象和封装是一个问题的两个方面。下面的例子反映了面向对象方法。



例如,你想要组建一台计算机,它拥有许多组件-CPU、内存、磁盘、显卡和主板等,每个组件都可以是看成有属性(数据域)和方法(method)的对象,要使各个组件协调工作,只需要知道组件如何使用(类的使用)即可,且这些组件已经是厂商帮你设计好的(类的实现),这就是类的抽象;你只要遵守厂商给你的使用规则就能够运作组件,这就是类的合约;且无须了解组件内部是如何工作和实现的,内部功能的实现被封装起来,对你隐藏,这就是类的封装

二、面向对象思考

面向过程和面向对象

大部分人入门的语言是C语言,它是一门面向过程的语言。它与面向过程的JAVA有什么区别呢?

从范式角度:

面向过程的范式重点在于设计函数(方法),基本单位是函数,比方记录人的信息,面向过程的语言设计更多的是注重记录的过程,假如让我使用C语言设计,必定是将设计一个person.c文件模块,思考存储的过程函数需要什么样的数据(name,sex,age),然后把这些数据当成函数的形参,存储函数getPerson(char * name , char * sex , unsigned int age)获取到所有信息进行存储,在person.c文件中并不会产生函数之外数据域与函数产生耦合,模块本身一般不设计数据域,更多的是设计面向过程的函数。



面向过程的范式是将数据和方法耦合在一起构造成对象,基本单位是,类就好比一个模板,就像生产可乐的配方(class)去生产可乐(object),让我用JAVA设计记录人的信息,我会先将人抽象成一个实体类,它具有什么数据域(name,sex,age)和方法域(get&set method),实体类为存储的方法所服务(实体对象做参数)。



下面是实现实体类代码

/**
* Created by FengJie2532 on 2017/1/10.
*/
public class Person
{
private String name;
private String sex;
private int age;

public String getName ()
{
return name;
}

public void setName ( String name )
{
this.name = name;
}

public String getSex ()
{
return sex;
}

public void setSex ( String sex )
{
this.sex = sex;
}

public int getAge ()
{
return age;
}

public void setAge ( int age )
{
this.age = age;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: