day47(4.27)面向对象

package test01;

import java.lang.*;

public class CodePointAt1 {



  public static void main(String[] args){

   String strCom="I Like Java";

   int strLower=strCom.codePointAt(8);

   System.out.print(strLower);

  }





}



面向对象程序设计语言简称(OOP),OOP的思想相当于是个人计算机制造商所购买的“预包装功能”。认为程序是由对象组成的, 这些对象有自己的属性和能够执行的操作只要对象能够满足要求,就不必关心功能的具体实现过程。OOP的关键是让每一个对象负责执行一组相关的任务,这种工作方式是由过程化程序设计中人们熟悉的过程调用实现的。,而在java程序设计中,这些过程调用称为方法调用。(简单一点说就是过程调用相当于java中的方法调用)。

特别需要说明的一点是,一个对象既不能直接访问另一个对象内部的的数据,也不能让其他对象直接访问自己内部的数据,对象之间的所有通信都是通过方法调用完成的。

封装对象的意义:通过封装对象数据,最大限度地提高可重用性,减少数据的依赖性,并将程序的高度时间降到最短。

对像就相当于过程设计语言中的模块不要让一个对象的任务过多,创建一个仅执行少量任务的小型对象,会使用设计和高度过程简化,而创建一个内部含有复杂数据和数百个过程的对象,会使设计过程变得非常困难。

OOP术语有一个很重要的一个概念是类。类是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例。

卦装(数据隐藏)是一个与对象有关的非常重要的概念,从形式上看,封装是将数据和行为结合到一个包中,并对对象的使用者隐藏了数据的实现方式,对象中数据被为实例域(instance field),操纵数据的过程称为方法(method),对于每一个特定的类对象实例都有一个特定的实例域值。这些值班的集合就是这个对象的当前状态(state)。实现卦装的关键在于绝对不能让类的方法直接访问其他类的实例域,但可以访问它自己的实例域,。程序仅通过对象的方法和对象数据进行交互,卦装给予对象黑盒特征,这是提高重用性和复用性的关键。

OOP在还有一个原则是,让用户自定义一个java类,类可以通过扩展另一个类来建立。事实上,java中所有的类都来自于一个神通广大的超类,他就是——————————Object类。

对象的三个主要特性:

对象的行为(behavior):可心对对象施加哪些操作,或可以对对象施加哪些方法

对象的状态(state):当施加那些方法时,对象该如何响应

对象的标识(identity):如何区分具有相同行为与状态的不同对象?

同一个类的所有对象实例由于支持相同的行为而具有家庭的相似性,对象的行为是用可调的方法定义的。

每个对象都保存着描述当前特征的信息,这就是对象的状态。对象的状态可能会随着时间而发生改变,但这种改变不会自发的。对象的状态改变必须通调用方法的实现。没有经过方法而调用而改变对象的状态,就说明封装性一定受到了破坏。

名词可能会形成类,动词可能形成名词的类的方法,而这些动词的操作结果又是名词类中对象的参数。

类之间的关系:

  1. 依赖(uses-a)是一种最明显,最常见的状态,如果说一个类的方法操纵另一个类,我们就说一个类依赖于另一个类。如:order类使用Account类是因为Order对象需要访问Account对象查看信用状态。类的耦合度的意义:尽可能地将相互依赖的类减至最少,如果类A不知道类B的存在,那么不会关心类B的任何改变,意味着类B的改变不会使类A产生任何的bug
  2. 聚合/关联(has-a)聚合关系意味着类A包含着类B的对象。
  3. 继承(is-a)是一种用来特殊与一般关系的。如果类A扩展类B,那么类A不但包含从类B继承的方法,还会有一些额外的功能。

可以使用UML绘制描述类之间的类图,类用矩形表示,类之间的关系用带有各种修饰的箭头表示。在过程程序设计中,首先需要确定的完成什么任务,在使用逐步求精的处理过程,将要完成的分解成若干个子任务,子任务再分解成更小的子任务,直到子任务可以直接实现为止。(这是自顶向下的方法)编写求解简单的任务的过程,并将它们组成更加复杂的过程直到完成需要功能为目(这是自底向上的方法)。而在OOP的最重要的区别是首先从项目中分离出类,然后再找到这个类中需要的哪些方法。OOP中与过程的还有一个区别在于,OOP中的每个方法都与负责执行这个类的相关联。使用类和方法的好处:对于规模较大的问题,一,类提供一个便于将从多的方法聚集在一起的机制,,二类的封装机制有助于其他类的方法隐藏数据表示。类的封闭机制更容易找出bug

要想使用对象,就必须首先构造对象,并指定其初始化状态。然后对对象施加方法。使用构造器)(conctructor)。构造器的名称要和类名相同,因为前面看到的类名要和文件相同,所以这里我这样理解就是:文件名=类名=构造器名。要想构造一个Date类,在构造器前面加一个new 如:new Date() 这样就构造了一个Date对象。

对象可以传递给一个方法如:System.out.outln(new Date()) ;

也可以将一个方法应用到构造的对象上如:String s=new Date().toString() ;

我们构造的对象可以多次使用,也可以直接使用(直接使用如上),如果需要多次使用,就需要对对象放在一个变量中,便可以做到多次使用。

以下这段程序是错误的:

Date deadline

S=deadline.toString() ;//

错误在原因是不能引用 toString方法的,因为deadline是一个变量,不是一个对象,所以更不可能是一个对象变量,对象可以传递给一个方法,也可以应用一个方法到对象上,对象变量也可以,但是只是单纯一个变量是不可以的的。所以是错的。

初始化变量使其成为对象变量有两种方法:一新构造一个对象对象 如:deadline=new Date();

二变量引用一个已经存在的对象 如:deadline=birthday;

Java在对象的完整拷贝必须使用clone方法来做到,在C++中是通过拷贝一个新的链表。新的链表与原始的完全相同但是却是独立的链接。


书:Algorithms+Data +Structure=Programs

   The Unified Modeling Language User Guide作者:grady boochIvar Jacobson james Rumaugh

计算机英语:OOP 面向程序设计

        Prepackaged functionality 预包装功能。

        Encapsulation    封装

        Instance field    实例域

        Behavior         行为

        State            状态


        Identity         标识

conctructor)    构造器

linked list      链表


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值