Class 2005/05/25.

Slides:



Advertisements
Similar presentations
第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
Advertisements

Java语言的特点 Java开发环境的搭建
单元二:面向对象程序设计 任务二:借书卡程序设计.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第 9 章 物件的建構.
问卷调查的规范与技术 问卷调查的规范与技术.
四資二甲 第三週作業 物件導向程式設計.
第一章 面向对象程序设计.
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
類別與物件 Class & Object.
第八章 类和对象.
JAVA程序设计 (03) JAVA Programming
C++语言程序设计教程 第7章 类与对象 第7章 类与对象.
1 Department of Computing.
程設一.
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
Classes Lecturer: 曾學文.
CHAPTER 9 建構方法 ROBERT.
第六章 类的扩展与继承.
第六章 继承性和派生类 胡昊 南京大学计算机系软件所.
程式設計實作.
抽象类 File类 String类 StringBuffer类
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
Object-Oriented Programming in C++ 第一章 C++的初步知识
第三章 C++中的C 面向对象程序设计(C++).
C++语言程序设计教程 第7章 类与对象 第7章 类与对象.
類別的繼承 Vehicle Car.
SPOTO TM JAVA课程 JAVA中的OO语法
第四章 小技巧.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
类类型 C++支持的内置类型和操作,如 int i=10; i=i%6; i=i+4;
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
软件学院 张 慧 清华大学软件学院.
Ch02-基礎語法.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
10 多載函數 10.1 多載概論 多載一般函數 多載成員函數 10-3
C++面向对象程序设计 谭浩强编著 授课教师:姬广永 QQ: 学习网站:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第10讲 构造函数和析构函数 构造函数 析构函数 This 指针.
第四章 类 4.1 基础知识 4.2 构造函数 4.3 方法 4.4 属性与索引 4.5 String类
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
第三章 数据抽象.
Object-Oriented Programming in C++ 第二章 类和对象
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
第二章 类型、对象、运算符和表达式.
第二章 基本数据类型 ——数据的表示.
Review 1~3.
第 9 章 建構函式與解構函式.
#include <iostream.h>
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第4讲 类和对象、异常处理 ggao.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
第9章 C++程序设计初步 9.1 C++的特点 9.2 最简单的C++程序 9.3 C++的输入输出 9.4 函数的重载
變數與資料型態  綠園.
C++程序语言设计 Chapter 14: Templates.
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
第6章 继承和多态 伍孝金
第二节 偏 导 数 一、 偏导数概念及其计算 二 、高阶偏导数.
第十二章 C与C C转入C++时不需改变的内容 12.2 C转入C++的一些与类无关的 新特性
Presentation transcript:

Class 2005/05/25

類別宣告 class Cat { public: int itsAge; int itsWeight; void Meow(); }; 宣告一個類別就建立了一個新型態. 類別名稱 class Cat { public: int itsAge; int itsWeight; void Meow(); }; 類別的所有成員(所有變數跟方法)預設皆為private。 私有成員(private)只能在該類別的方法內存取, 公共成員(public)則可以被該類別的所有物件存取。 成員變數 成員函數 結束分號

函數 函數是一個能處理資料並返回一個值的副程式. 函數宣告: 返回值型態 函數名稱 ( 參數 ) ; 例: 返回值型態 函數名稱 ( 參數 ) ; 例: int Area(int length, int width); 每個函數都有返回型態,如未明顯指出,返回型態是int. 如果函數沒有返回值,返回型態應設為void. 定義函數: 返回值型態 函數名稱 ( 參數 ) { } 例: int Area(int length, int width) { //陳述句 return (length * width);

類別---定義物件 Cat Test; /*定義了類別為Cat的物件Test*/ 物件是將類別實體化,如此才有配置記憶體空間,程式才能透過物件來存取類別中的成員變數與函數。 Cat Test; /*定義了類別為Cat的物件Test*/ 物件名稱 類別名稱 Memory space int itsAge; int itsWeight; void Meow(); Test

類別---存取類別成員 Test . itsAge = 5; Test . Meow (); 使用點運算子(.)來存取物件的成員 呼叫成員函數 Test . Meow ();

類別中的成員 類別的成員變數通常會預設為私有(private) 必須建立公共(public)的存取方法函數,來存取私有成員變數 class Cat { }; public: int GetAge(); void SetAge(int age); private: int itsAge;

範例1 class Circle { public: float x0,y0; float radius; getCircumfrence()已經沒有傳入參數,因為它已經是Circle 的一份子,所以可以直接存取radius變數,而不需透過物件成員運算子(ex. c.radius) class Circle { public: float x0,y0; float radius; float getCircumfrence() return 2.0*3.14159*radius; } }; getCircumfrence()的宣告和定義都放在類別之內,這種宣告的方式稱為inline 函式宣告,優點是執行效率較高,但是編譯時產生的執行檔較冗長.

成員函式放在類別之外 也被稱為函數定義。 成員函數定義以類別名開始,然後是兩個冒號、函數名以及參數。 :: int Cat GetAge() 前面需加返回值型態 int Cat GetAge() { } return itsAge;

範例2 class Circle { public: float x0,y0; float radius; float getCircumfrence(); }; float Circle::getCircumfrence() return 2.0*3.14159*radius; } 表示getCircumfrence()屬於Circle 的成員。

範例3 #include<iostream.h> #include<string.h> class Reader //宣告類別 { private: char name[10]; public: long index; char *get_name() return name; } void set_name(char *); }; void Reader::set_name(char *i_name) { //Reader的成員函數,作字串copy strcpy(name,i_name); int main() { Reader A_Reader; char name[10]; cout<<"Please enter your name:"; cin>>name; A_Reader.index=1; A_Reader.set_name(name); cout<<"Your name is "; cout<<A_Reader.get_name(); cout<<"(index"<<A_Reader.index; cout<<")\n"; return 0; }

範例4 #include<iostream.h> #include<string.h> class String1 //宣告類別 { private: char *str; int len; public: void show_string(); void set_string(char *); }; void String1::show_string() cout<<"string:"<<str << " \nlength:"<<len<<endl; } void String1::set_string(char *i_string) { len=strlen(i_string); str=new char[len+1]; strcpy(str,i_string); } int main() String1 A_String; char i_string[12]="Hello Kitty"; A_String.set_string(i_string); A_String.show_string(); return 0;

建構子(建立者constructor) 類別有一個特別的成員函數,稱為建構子。用來初始化類別中的成員資料。 建構子可以接收參數,但不能返回值,即使是void,也不能。 建構子是一個與類別同名的類別方法。 沒有宣告建構子時,編譯器將自動產生一個預設的建構子。 預設的建構子沒有參數,而且什麼也不做。 物件作實體化時,會自動啟動建構子。 一定要設成public 。

用建構子初始化 我們可以自己寫預設建構子,並且在預設建構子中寫一個用於初始化類別的函數體。 宣告Cat 類別 類別名稱 兩個冒號 傳入的參數 class Cat { }; Cat :: Cat 與類別同名的類別方法 (int initialAge) pubilc: private: 在public中寫一個預設建構子 Cat() 注意: 建構子無返回值,連void也不能有。 { } Cat(); itsAge = initialAge; int itsAge; 將 initialAge 的值指定給成員變數 itsAge

解構子(破壞者destructor) 每當宣告建構子時,就應同時宣告一個解構子。 沒有宣告解構子時,編譯器將自動產生一個。 解構子總是帶有類別名,前面是一個否定號(~)。 不可作overloading 。 兩個冒號 否定號加類別名 類別名稱 Cat :: ~Cat() { }

多載函數 C++允許建立多個同名函數,這就叫做函數重載 。 這些函數的參數必須不相同,或者是參數型態不同,或者是參數數目不同,或者是兩者都不同 。 型 態 不 同 int myFunction(int , int) int myFunction(long , long) 型態、參數 數目都不同 int myFunction(long)

多載建構子 建構子與類別的成員函數都可以像函數一樣重載。 class Cat { public: Cat( ); private: } 宣告 Cat類別 class Cat { } 預設建構子 public: private: Cat( ); Cat(int initialage); 接收1整數變數的建構子 int itsAge;

建立參考(將位址傳入) 建立參考時,需使用另一個物件名來初始化 。 對參考所做的一切會真正地作用到目標之上 。 建立參考: 先寫目標物件的型態, 然後是參考運算子(&), 再加上參考名﹝可以是任何合法的變數名﹞ 範例:建立一個對整數變數的參考 int intOne; int & rSomeRef = intOne;