当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

北京大学:《数据结构与算法》课程教学资源(实习讲义)面向对象程序设计

资源类别:文库,文档格式:PPT,文档页数:22,文件大小:442KB,团购合买
点击下载完整版文档(PPT)

面向对象程序设计 吴迪毛琛

面向对象程序设计 —吴迪 毛琛

1类与对象 对象( Object)是类(Cass)的一个实倒( nstance),重 点是类的设计,而不是对象的设计。 类提供关键字 public、 protected和prⅳate,这样可以达到 信息隐癥的目的,即让类仅仅公开必须要让外界知道的内 容,而隐藏其它一切内容。但不要滥用封裝。 两种人:“以教据为中心”、“以行为为中

1.类与对象  对象(Object)是类(Class)的一个实例(Instance),重 点是类的设计,而不是对象的设计。  类提供关键字public、protected 和private ,这样可以达到 信息隐藏的目的,即让类仅仅公开必须要让外界知道的内 容,而隐藏其它一切内容。但不要滥用封装。  两种人:“以数据为中心”、“以行为为中心

2.继承 继承: public继承:所有域都继承 private继承: public域的内容成 private城 protected继承:pubc域的内容成 protected 域的 逻辑关糸: B继承A那么逻辑上一定是B从属于A,不能为了让B 拥有A的一些功能,就滥用继承。 公鸡为什么追打一只下了蛋的母鸡?! 因为母鸡下了一个鸭蛋~

2.继承  继承:public继承:所有域都继承 private继承:public域的内容成private域 protected继承:public域的内容成protected 域的  逻辑关系: B继承A那么逻辑上一定是B从属于A,不能为了让B 拥有A的一些功能,就滥用继承。 公鸡为什么追打一只下了蛋的母鸡?! 因为母鸡下了一个鸭蛋~~

3虚函数和多态 〉除了继承外,C十十的另一个优良特性是支持多态, 允许将派生类的对象当作基类的对象使用。 〉加上虛函数和抽象基类后,“多态”的好处就体 现出来了。 例如:XXXX的几何形体系列问题 抽象基类只管定义纯虛函数的形式,具体的功能 由派生类实现

3.虚函数和多态  除了继承外,C++的另一个优良特性是支持多态, 即允许将派生类的对象当作基类的对象使用。  加上虚函数和抽象基类后,“多态”的好处就体 现出来了。  抽象基类只管定义纯虚函数的形式,具体的功能 由派生类实现。 例如:XXXX的几何形体系列问题

“抽象基类”和“多态”有如下突出优点 应用程序不必为每一个派生类编写功能调用,只需要对抽 象基类进行处理即可。可以大大提高程序的可复用性。 派生类的功能可以被基类指针引用,这叫向后兼容

“抽象基类”和“多态”有如下突出优点:  应用程序不必为每一个派生类编写功能调用,只需要对抽 象基类进行处理即可。可以大大提高程序的可复用性。  派生类的功能可以被基类指针引用,这叫向后兼容

良好的编程风格 命名约定 有不少人编程肘用拼音给函数或变量命名,这样做并不能 说明你很爱国,却会让用此程序的人迷糊,程序中的英文 一般不会太复杂,用词要力求准确 Microsoft提倡的匈牙利命名法

良好的编程风格 1.命名约定 有不少人编程时用拼音给函数或变量命名,这样做并不能 说明你很爱国,却会让用此程序的人迷糊,程序中的英文 一般不会太复杂,用词要力求准确。 Microsoft提倡的匈牙利命名法

new、 delete与指针 在C语言中,函数 malloc用于申请内存,函教free用于释 放内存。由于C+兼容C语言,所以neW、 delete、 malloc free都有可能一起使用。 malloc - free new - delete 在用 delete或用free释放p所指的内存后,应该马上显式地 将p置为NULL,以防下次使用p肘发生错误。 预防“野指针” ()指针没有初始化。 (2)指向已经释放了的内存地址。9g

new、delete 与指针  在C 语言中,函数malloc 用于申请内存,函数free 用于释 放内 存。由于C++兼容C 语言,所以new、delete、malloc、 free 都有可能一起使用。 malloc -- free new -- delete  在用delete 或用free 释放p 所指的内存后,应该马上显式地 将p 置为NULL,以防下次使用p 时发生错误。  预防“野指针” (1)指针没有初始化。 (2)指向已经释放了的内存地址。eg

Const的使用 》1.强制保护函数的参数值不发生变化 void f( String s);//pass by value void g(const String &s) ∥name的值不会改变 vodh( const String*s);∥name的值不会改度 mainO String name=“Dog f(name);∥/name的值不会改变 g(name);∥/name的值可能改变 h( (name);∥/name的值可能改变

Const的使用  1.强制保护函数的参数值不发生变化 void f(String s); // pass by value void g(String &s); // pass by referance void h(String *s); // pass by pointer main() { String name=“Dog”; f(name); // name 的值不会改变 g(name); // name 的值可能改变 h(name); // name 的值可能改变 } void g(const String &s); // name 的值不会改变 void h(const String *s); // name 的值不会改变

2.强制保护类的成员函数不改变任何数据成员的值 class stack public void push(int elem) void pop(void int Count(void) const;∥/ const类型的函数 private: nt num int data[ 00]: int Stack: Count(void)const tt num: ∥编译错误,num值发生变化 0); ∥编译错误,pop将改变成员变量的值 return num

 2.强制保护类的成员函数不改变任何数据成员的值 class Stack { public: void push(int elem); void pop(void); int Count(void) const; // const 类型的函数 private: int num; int data[100]; }; int Stack::Count(void) const { ++ num; // 编译错误,num 值发生变化 pop(); // 编译错误,pop 将改变成员变量的值 return num; }

点其他的小体会 1.不要写过复杂的语句。 》2.不要写功能很多很复杂的函数,程序要尽量的模块化, 每个函数执行比较单一的功能,便于理解和修改

一点其他的小体会  1.不要写过复杂的语句。  2.不要写功能很多很复杂的函数,程序要尽 量的模块化, 每个函数执行比较单一的功能,便于理解和修改

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共22页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有