类和对象

两种编程范式比较
一、面向过程程序设计
在面向对象程序设计以前,使用的都是面向过程程序设计,采用的是“自上而下”“步步求精”的编程思想,将程序一步一步的分解,并且按照一定的顺序执行。

二、面向对象程序设计
为了解决面向过程程序设计语言的弊病,出现了面向对象程序设计范式

用户先自定义需要使用的——类,在类中定义属性,和方法(行为),然后创建出对象,在该类型下的对象下组装程序,对象间通过消息传递,这时候一旦程序出现需求变动,需要修改,这时候可能仅仅只需要修改当前的类即可。

面向对象的基本概念
一、类(class)
将相同属性和相同行为的一组对象称为类,即具有共同特质的事务的集合就可以称为类,在面向对象程序设计中类是一个独立的单位,有着自己的类名。类是一个比较抽象的数据类型,它的使用往往需要用到实例即对象

二、对象
对象是类的实例化的结果,一个类可以有实例化出多个对象,但每个对象的属性值确不一定相同。

概述:java编程语言是纯粹的面向对象思想的语言。

现在程序开发有两个主流的方法:
(1)结构化程序设计,也叫面向过程程序设计
结构化程序设计主张以功能/步骤来进行软件设计。
如在解决问题时,主要是思考的是解决问题的步骤思路:
围棋游戏:
1.游戏开始,2,黑棋执行,3,绘制图片,4,判断输赢,
5,白棋执行,6,绘制图片,7,判断输赢,8,返回2.
9,游戏结束
结构化程序设计是以函数为程序单元 ,从一个函数开始,调用其他
普通函数,进行一些数据处理,一直调用下去。

设计思想:自顶而下,逐步精分,模块化

此种方式的编程语言有C,Basic,Pascal

(2)面向对象程序设计。
面向对象编程思想逐渐成熟起来。
它使用类,对象,继承,封装,消息等概念来进行程序设计。
主要从现实世界的客观事物(即对象)出发来进行开发软件系统,
尽可能的运用人的自然思维方法 ,从客观事物来思考问题,
认识问题。 从这些事物的本质特点,来抽象出系统所需要的类,
作为程序的基本单元。

  围棋游戏:
       黑白棋子及其行为,棋盘, 输赢规则

 类是面向对象编程的基本单元,类含有一类事物的共同特征,
 类可以产生多个对象,这些对象构成了程序中所需要的数据。

 从图中我们可以看出,软件系统是由多个类组成的。
 类是一类事物的抽象体现,而这些事物都有一些状态数据。
 即Field ,如,人,有身高,体重,姓名,性别,爱好等(
  程序设计时,只关心业务所需要的数据

)

Field,我们称之为成员变量,有些资料称之字段,也有些资料
称之为属性,java有property关键字 是属性的。

类除了封装了一些事物的状态数据外,还提供了操作这些状态数据的
方法(Method),实现逻辑。

从上述内容可以总结出
        成员变量(状态数据)+方法(行为)定义=类的定义

此类方法的编程语言:C++,java,C#, Ruby

==================================
完成一个“猪八戒吃西瓜”这样的逻辑

面向过程: 函数吃 是核心
        吃(猪八戒,西瓜)
面向对象: 一类事物的一个:猪八戒,吃是猪八戒的行为
                    一类事物的一个:西瓜
        猪八戒.吃(西瓜)

组装电脑:
如果是主板,硬盘,内存条这样的大件,容易组装
—面向对象

        如果是二极管,三极管,电路板这样的小件进行组装,
        很难 ---面向过程   

面向对象要比面向过程的粒度要大,相对来说容易,简单。
面向过程要比面向对象的性能要高,因为面向对象要进行对象的实例化,
比较吃内存,吃性能。

===========================================
抽象数据类型:用一堆不同类型的状态数据来描述的一种新的事物。

reg: 描述电脑,
颜色, 尺寸, 型号, 主板, 内存, 硬盘,显卡
0xFF00FF 15.6 thinkpadT460 华硕 三星 希捷 , inter
0xFF00FF 15.6 lenovoE40 三星 三星 西数 , inter

这些事物的共同行为:
                   办公
        playGame
        play

 用状态数据(成员变量)总结一类事物的共同特征,
 用方法总结一类事物的共同行为。

类的定义: =成员变量+方法

格式语法:
  修饰词  class  类名{
  type  field1;
  type  field2;
  .....

        修饰词 返回值类型  method1(形参){}
        修饰词 返回值类型  method2(形参){}
  .....     

}

定义一个类型:Person

   成员变量(状态数据-共同特征):
     name,gender,age,birth,idcard,isMarry
   方法(行为)
     eat()
     sleep()
     work()
     sport()   

对象:类的实例化,即类中的个体
如何创建对象:使用关键字new
类名 引用变量 = new 类名();

引用变量,简称引用,存储的是对象的地址信息

成员变量的调用:
引用.成员变量名
方法的调用:
引用.方法名(有参传参)

类与对象的关系:
类是对象的模板,对象是类的实例化

内存管理机制:
jvm将其管理的内存分成三大主要区域:方法区,堆,栈
方法区:当程序运行时,将所需要的class文件(类的信息)加载到此区间
堆: 用于存储引用类型所产生的对象,如果对象有成员变量,会给成员变量分配空间

栈:方法内的变量(局部变量)是在栈中开辟的

基本类型的变量与引用类型的变量:

值传递:
基本数据类型的变量里存储的是基本类型的数据,
int a = 5;
int b = a;//将a里的5复制了一份,传递给了b

址传递:
引用类型的变量里存储的是对象的地址信息
Car c = new Car();
Car d = c;//将c里的地址信息复制了一份,传递给了d

空指针异常:
java.lang.NullPointerException
在程序运行时,可能会出现此异常,出现的原因:
Car c = new Car();
System.out.println(c.color);//0
Car c = null;
System.out.println(c.color);//就会出现空指针异常

null:是引用类型的默认值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值