面向对象的程序设计(一).

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

面向对象程序设计 、. 第二章 面向对象的分析与设计 学习目标 1 确定系统中的对象 2 确定对象的属性及操作 3 测试对象的有效性 4 区分对象和类 5 了解面向对象的编程和过程化编程之间的区别 6 了解封装的主要好处 7 了解软件开发的主要步骤.
第三讲 Java与面向对象技术 1、面向对象的概念 2、Java中的类、方法和变量 3、Java名字空间及访问规则
Java语言的特点 Java开发环境的搭建
单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
项目6 通用堆栈.
四資二甲 第三週作業 物件導向程式設計.
面向对象程序设计(Java) 徐志红
南京理工大学 第2章 Java基本语法 本章我们将学习Java编程语言的基本语法,包括变量、操作符、表达式、语句、字符串、数组、控制流以及如何使用帮助文档。 使用下面的编程框架: public class Test{ public static void main(String []args){ //以下添加测试代码.
第一章 面向对象程序设计.
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
第二章 JAVA语言基础.
類別與物件 Class & Object.
Ch07 介面與多重繼承 物件導向程式設計(II).
第5章 进一步讨论对象和类.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
Ch08 巢狀類別 物件導向程式設計(II).
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
物件導向程式設計 (Object-Oriented rogramming)
第四章 在 C# 中实现 OOP 概念.
第十一章 面向对象设计 第十二章 面向对象实现
Java基础 JavaSE异常.
Classes Lecturer: 曾學文.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
第六章 类的扩展与继承.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
程式設計實作.
Java语言程序设计 第五部分 Java异常处理.
面向对象程序设计 、.
Java程序设计 第9章 继承和多态.
辅导课程十三.
類別的繼承 Vehicle Car.
SPOTO TM JAVA课程 JAVA中的OO语法
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Java程序设计 第2章 基本数据类型及操作.
C/C++/Java 哪些值不是头等程序对象
第六章 属性、索引器、委托和事件.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
JAVA 编 程 技 术 主编 贾振华 2010年1月.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第三课 标识符、关键字、数据类型.
第二章 Java基本语法 讲师:复凡.
Java變數 2014/6/24.
第7章 异常处理.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第三章 数据抽象.
第二章 Java语法基础.
Review 1~3.
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
辅导课程十二.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Summary
Presentation transcript:

面向对象的程序设计(一)

知识点 面向对象的编程概念 封装、继承、多态 Java中面向对象技术的实现手段

面向对象的思想概述 目的是使描述问题的问题空间和解决问题的方法空间在结构上尽可能地一致。实现代码的可重用,简化程序设计。 pascal的设计者(沃思) 算法+数据结构=程序。 面向对象方法的核心概念。类和对象。类作为对象的蓝图,对象是类的具体实现。 面向对象技术的特征: 封装、继承和多态。 面向对象的技术: 1、面向对象的分析(OOA) 2、面向对象的设计(OOD) 3、面向对象的实现(OOP)

面向对象的软件开发过程 面向对象的分析(OOA):明确用户的需求,用标准化的面向对象的模型规范(如:UML)表述这一需求,形成面向对象的分析模型,为现实世界建模。 面向对象的设计(OOD):包括问题逻辑(OOA)、界面管理和数据管理。即:将OOA模型细化,设计类,包括类的属性和类之间的相互关系。 面向对象的实现:选定一种面向对象的编程语言,编码实现上述的设计,并在开发过程中引入测试,完善整个解决方案。Rose工具可以自动生成程序。

类、对象和实体 类是所有具有一定共性的一批对象的抽象。 对象是类的一个实例 实体是现实世界中存在的具体事物 对象 映射 实体 实例化 抽象 抽象出共有的东西 计算机世界 现实世界

类和对象的举例 class Person { String name; int age; void sayHello( ){ //定义一个类 class Person { String name; int age; void sayHello( ){ System.out.println(“Hello! My name is ”+name); } //声明并创建一个属于类Person的对象,将该对象命名为a Person p = new Person(); //调用对象p中的方法 p.sayHello();

类的组成 类体是由成员变量和成员方法组成的。 成员变量是静态特征的描述,可以是java中的任意的数据类型。 成员方法是动态特征的反映,包括方法头和方法体。 类、成员变量和成员方法都有访问权限的限制。

类的声明 [public][abstract|final] class 类名 [extends 父类名][implements 接口名] 例如: public class Vechile{ private double maxLoad; public void setMaxLoad(double value) {maxLoad=value; }

声明属性 [public|protected|private][static][final] type variableName; 例如:public class Foo{ private int x; private String name=“Hello”; } Volatile:使多个并发的线程对该变量的访问能保持一致。

声明方法 [public|protected|private][static][final |abstract][native][synchronized] returnType methodName([paramList]) [throws exceptionList] 例如: public class Dog{ private int weight; public void setWeight(int newweight) {} public int getWeight() {} }

构造方法 构造方法(构造函数):是一个特殊的方法,构造方法具有和类名相同的名称,专门用来创建对象,完成初始化工作。 特殊性体现: 1、方法名和类名相同。 2、没有返回类型,也不能写void 3、主要完成对类对象的初始化工作。 4、一般不能显式的调用,而是用new来调用。 5、在创建一个类的新对象的同时,系统会自动调用该类的构造方法为新对象初始化。

声明构造方法 [public|private|protected]className ([paramList]) {方法体} 例如:public class Dog{ private int weight; Dog(){ weight=12; }

默认构造方法 每一个类至少有一个构造方法。 如果用户没有为类定义构造方法,系统将为这个类提供一个默认构造方法,该方法无形参,方法体为空。形如: className (){} 如果class前有public修饰符,则默认构造方法前面会是public的. 这样,即使一个类没有显式地给出构造方法,也可使用默认构造方法为其创建实例。

默认构造方法 用默认构造方法初始化对象时,由系统用默认值初始化对象成员变量。各种数据类型的默认值为: 数值型 0 boolean false 数值型 0 boolean false char ‘\0’ 对象 null

构造方法举例: public class MyDate{ private int year; private int month; private int day; MyDate() { }//也为public MyDate(int i,int j,int k){ year=i; month=j; day=k; }}

Main 方法 Main方法表示一个java程序的执行起点,main方法必须放入一个类中定义,java中可以包含一个或多个类,但在application环境下有一个类(只能由一个类)必须定义一个main方法。 Main是程序中唯一与用户直接交换信息的方法,它没有返回值,由一个字符串数组参数,方法体由用户编写。

Main 方法 定义格式: Public static void main(String args[]) {方法体} main方法属于类不属于类实例,所以系统调用main方法时不用创建它所属类的实例。 Java程序可以带一个或多个命令行参数,这些参数作为字符串依次存放在args数组的各元素中。 举例:MainTest

方法的重载 概念:多个方法拥有相同的方法名,是线多态的手段之一。 特点:重载的方法之间参数列表必须不同。 构造方法可以重载 例 Person.java

对象的创建和使用 对象的创建 首先利用已有的类声明对象名,通过该类构造方法实例化对象 Person p = new Person(); 对象的使用 通过对象访问其属性和方法 p.sayHello(); p name age 开辟空间

继承 引入继承继承性的目的 提高程序抽象程度,实现代码重用 通过已定义一个类,派生出新的不同个性的子类,二者之间是一般与特殊的关系。

继承性(1) 继承和子类的概念 继承而得到的类为子类,被继承的类为父类。子类继承父类的状态和行为,同时也可以修改父类的状态和行为,并添加新的状态和行为。 继承关系也称“即是”(is a)关系。因为当类Y继承类X时,由继承性可知Y具备了X的全部性质,所以Y即是X。显然Y也包含了X中没有的属性和方法,具有比X更多的性质。

继承性(2) Java中一个类可以有多个子类,也可以没有,其数量上没有限制。 Java中不支持多重继承,一个类只能有一个父 类,缺省父类为Object类。所有类都是通过直接或间接地继承Java.lang.Object得到的。 Java中一个类可以有多个子类,也可以没有,其数量上没有限制。

子 类 (1) The Employee class: public class Employee { 子 类 (1) The Employee class: public class Employee { public String name = ""; public double salary; public Date birthDate; public String getDetails() {...} }

子 类 (2) The Manager class: public class Manager { 子 类 (2) The Manager class: public class Manager { public String name = ""; public double salary; public Date birthDate; public String department; public String getDetails() {...} }

子 类 (3) public class Employee { public String name = ""; 子 类 (3) public class Employee { public String name = ""; public double salary; public Date birthDate; public String getDetails() {...} } public class Manager extends Employee{ public String department; }

子 类 (4) class < name> [extends < superclass>] { 子 类 (4) Java子类定义语法: class < name> [extends < superclass>] { < declarations>* } 例:ABTest

成员变量的隐藏和方法重写 在类层次结构中,当子类的成员变量与父类的成员变量同名时,子类的成员变量会隐藏父类的成员变量,当子类的方法与父类的方法具有相同的名字、参数列表、返回值类型时,子类的方法叫作重写了父类的方法,当重写的方法在子类对象被调用时,它总是参考在子类中定义的版本,在父类定义的方法就被隐藏。例:ABTest1

方法重写总结 必须遵循两个原则,否则编译器指出程序出错 1、重写的方法不能比被重写的方法有更严格的访问权限。 2、重写的方法不能比被重写的方法有更多的异常。

关键字this(1) This表示所调用方法或所访问的变量对象本身 void sayHello() { System.out.print(“hello! my name is”+name) } System.out.print(“hello! my name is”+this.name)

关键字this(2) This表示所调用方法或所访问的变量对象本身 person(int age ,String name) { this.age=age; this.name=name; } this.age表示类成员变量,而age表示方法中的参数变量。

关键字this(3) 用this调用另一构造方法 person() { this(0,” ”) }

super 子类在隐藏了父类的成员变量或重写了父类的成员方法后,有时还要用到父类的成员变量,或在重写的方法中使用父类中被重写的方法以简化代码的编写,这时就要访问父类的成员变量或调用成员方法,java中通过super来实现对父类成员的访问。 Java中,this用来引用当前对象,与其类似,super用来引用当前对象的父类。

Super的使用 1、用来访问父类被隐藏的成员变量 Super.variable 2、用来调用父类中被重写的方法。 Super.Method([参数列表]) 3、用来调用父类的构造方法。 Super([参数列表])

关键字super (2) public class Employee { private String name; private double salary; private Date birthDate; public String getDetails() { return "Name: " + name + "\nSalary: " + salary; } public class Manager extends Employee { private String department; // call parent method return super.getDetails() + "\nDepartment: " + department;