技术在于交流.沟通,转载请注明出处并保持作品的完整性. 本节主要介绍一下类与类之间的关系,也就是面向对象编程先介绍两个术语 Object Oriented Programming   OOP面向对象编程 Object Oriented Design  OOD面向对象设计 对于类与类之间的关系有很多种,但是我认为理解3种足够 1.Inheritance (继承) 2.Composition (组合) 3.Delegation (委託)  该种关系也可以理解成聚合 一.组合 1.定义: has-a的…
20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明,如图所示: 2.测试代码并未上传: 3.主类位于Main.java中: 4.若有修改,仍会更新: 二.需求分析 之前在20165325 2017-2018-2 <Java程序设计>结对编程_第一周:四则运算里面已经对需求分析作出了总体的阐述,在此不作赘述.上一周,我们小组已经实现了在一个命令行程…
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 概要 一.拷贝构造 二.拷贝赋值 三.重写操作符 四.生命周期 本节主要介绍 Big Three 即析构函数,拷贝构造函数,赋值拷贝函数,前面主要围绕不带指针的class complex本节中主要围绕带指针的String类 前面我说过如果你创建的类不带有指针,那么多半你可以不用写析构函数,但是如果你创建了一个带指针的类,那么你必须重写Big Three 创建一个类 class String { public: String(); Strin…
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 概要: 知识点1 构造函数与析构函数 知识点2 参数与返回值 知识点3 const 知识点4 函数重载(要与重写区分开) 知识点5 友元 先以C++的两大经典class(complex 不含指针,   string 含指针)之一 complex(复数类) 做例子. #ifndef complex_hpp //防止头文件重复 #define complex_hpp #include <stdio.h> class complex { pub…
Java面向对象 网络编程  下 知识概要:                   (1)Tcp 练习 (2)客户端向服务端上传一个图片. (3) 请求登陆 (4)url 需求:上传图片. 客户端:           1,服务端点.           2,读取客户端已有的图片数据.           3,通过socket 输出流将数据发给服务端.           4,读取服务端反馈信息.           5,关闭. import java.io.*; import java.net.…
20165205 2017-2018-2<Java程序设计>结对编程一 第二周总结 设计思路 编写主类Arithmetic4 编写ArithmeticFunc类来实现计算,其中包括:加.减.乘.除.次方.开方的方法,也包含抛出异常的方法. 在ArithmeticFunc类中使用String[] str=s.split("")来查询算式中的计算符例如+,-,*将计算符两边的数字分别放在str[0]和str[1]当中. 在对计算符两边的数进行运算时分为了分式计算和整数计算. 在…
摘要: 技术在于交流.沟通,转载请注明出处并保持作品的完整性. 一 Reference 引用:之前提及过,他的主要作用就是取别名,与指针很相似,实现也是基于指针. 1.引用必须有初值,且不能引用nullptr 2.引用之后不能再引用别人 3.引用通常不用于声明变量,多用于参数类型,和返回值类型 见下面代码 int main(int argc, const char * argv[]) { ; //p is a pointer to x int* p = &x; // r is a referen…
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 这节课主要讲模板的使用,之前我们谈到过函数模板与类模板 (C++面向对象高级编程(四)基础篇)这里不再说明 1.成员模板 成员模板:参数为template,以下面的代码为例,T1和T2 确定下来后,  后面的U1和U2 仍然可以变化,其实可以直接理解成形参类型不确定 template <class T1, class T2> class pair_test { public: typedef T1 first_type; typedef…
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 1.pointer-like class 类设计成指针那样,可以当做指针来用,指针有两个常用操作符(*和->),所以我们必须重载这两个操作 /*简单实现一下智能指针的*与 -> 操作符*/ template <class T> class shared_ptr_test { public: T& operator* () const //重载* { return *px; } T* operator->() co…
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 1.conversion function 转换函数 //1.转换函数 //conversion function //只要你认为合理 你可以任意写转换函数 class Fraction { public: Fraction():m_numerator(num),m_denominator(den){} operator double() const //注意看 没有返回类型,这个编译器会帮做,且防止我们声明错误 函数名就是返回类型 { r…
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 一.Static 二.模板类和模板函数 三.namespace 一.Static 静态成员是“类级别”的,也就是它和类的地位等同,而普通成员是“对象(实例)级别”的. 类级别的成员,先于该类任何对象的存在而存在,它被该类所有的对象共享. Static 1.修饰变量,该变量时全局变量,其实静态变量不归属于类中,它的初始化甚至在这个类初始化之前初始化,且静态变量必须初始化,且只会被初始化一次 class Account { public: st…
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 概要 知识点1.重载成员函数 知识点2 . return by value, return by reference 知识点3 重载非成员函数 知识点4 重载操作符 这次主要回忆一下操作符重载. 先看一段代码,后续我会介绍这么做的原由 #include <iostream> class complex { public: complex(, ) : re(r) ,im(i) {} complex& operator += (con…
20165219 2017-2018-2<Java程序设计>结对编程一 第二周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运算 2 支持多运算符运算 3 支持分数运算,支持真分数运算 3 统计正确率 扩展需求: 1 处理生成题目并输出到文件 2 完成题目后从文件读入并判题 3 多语言支持:简体中文, 繁體中文, English 4 生成题目去重 设计思路 这是一个需要支持复杂运算的程序,不同于简单的单运算符的四则运算,需要设计多个…
17,对象模型:关于vptr(vitrual Pointer)和vtbl(virtual Table) 当存在虚函数就会出现虚指针vptr指向虚函数所在位置vtbl 将vptr实现vtbl内容翻译为C: (*p->vptr)n; (* p->vptr[n])(p); 动态绑定: 虚机制 1,指针 2,向上转型保证安全 3,调用的是虚函数 18, this指针 [Template Method] This->Serialize()实现: (*(this->vptr)[n])(this…
勿在浮沙筑高台 革命尚未成功,同志仍需努力 <h1> Conversion Function</h1> class Fraction { public: Fraction(int n, int den = 1) : m_fenzi(n), m_fenmu(den){} operator double() const { return (double)(m_fenzi/m_fenmu); } private: int m_fenzi; //分子 int m_fenmu; //分母 }…
11, 组合和继承 一, Composition 复合  has-a的关系 简单来讲, 就是: class A{     classB b1;   }; 这里讲到Adapter设计模式: template<class T> class queue{ protected:     deque<T> c; ...... }; queue为 最先插入在元素将是最先被删除:反之最后插入的元素将最后被删除,因此队列又称为"先进先出"(FIFO-first in first…
头文件和类声明 一定要注意使用防卫式的头文件声明: #ifndef _CLASSHEAD_ #define _CLASSHEAD_ . . . . #endif 基于对象和面向对象 : 基于对象 单一Class 面向对象 多个class 之间的关系. 构造函数 inline 默认实参 initialization list 初始列 (在初始列中进行,效率更高) 构造函数重载 overloading class complex { complex (double r =0, double i =…
有秒计时的数字时钟 题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目. 我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数: public Clock(int hour, int minute, int second); 用hour, minute和second初始化时间. public void tick();…
面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有…
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475377.html 作业学习目标 适应老师教学方式,能按照自主学习要求完成本周理论知识学习: 掌握Java Application程序结构: 掌握Java语言的数据类型与变量: 学会使用Java运算符构造各类表达式: 掌握Java Application输入输出技术: 掌握Java流程控制…
第三章 Java基本程序设计结构 第一部分:(理论知识部分) 本章主要学习:基本内容:数据类型:变量:运算符:类型转换,字符串,输入输出,控制流程,大数值以及数组. 1.基本概念: 1)标识符:由字母.下划线.美元符号.数字.汉字组成, 且第一个符号不能为数字.标识符可用作: 类名.变量名.方法名.数组名.文件名等 2)关键字:  关键字就是Java语言中已经被赋予特定意义 的一些单词. Eg:class.public.void等. 注意:关键字不做变量名 3)三种注释方式: a.// 注释内容…
一.理论知识部分 1.标识符由字母.下划线.美元符号和数字组成, 且第一个符号不能为数字.标识符可用作: 类名.变量名.方法名.数组名.文件名等.第二部分:理论知识学习部分 2.关键字就是Java语言中已经被赋予特定意义 的一些单词. 常见有:class.public.try.catch.if. float.import.void等. 关键字不做变量名. 3.Java有三种注释的方式:   // 注释内容由//一直到此行结束. /*和*/ 定义一个注释块.  /**开始,*/结束 这种注释方法…
2.1 <script>元素 向html页面中插入javascript的主要方法,就是使用<script>元素.这个元素被加入到正式的html规范中.html4.01为<script>定义了下列6个属性: 1:async:可选.表示应该立即下载脚本,但不妨碍页面中的其它操作,比如下载其他资源或等待加载其它脚本.只对外部脚本文件有效. 2:charset:可选.表示通过src属性指定的代码的字符集.由于大多数浏览器会会忽略它的值,因此这个属性很少有人用.   3:defe…
数据封装.继承和多态只是面向对象程序设计中最基础的3个概念.在Python中,面向对象还有很多高级特性,允许我们写出非常强大的功能. 我们会讨论多重继承.定制类.元类等概念.…
正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.  class Student(object): pass 然后,尝试给实例绑定一个属性: >>> s = Student() >>> s.name = 'Michael' # 动态给实例绑定一个属性 还可以尝试给实例绑定一个方法: >>> def set_age(self, age): # 定义一个函数作为实例方法 ...…
---恢复内容开始--- 面向对象编程---oop,是一种编程思想,oop把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 而面向对象的程序 设计把计算机视为一组对象的集合,而每个对象都可以接受其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间的传递. 数据封装 继承  多态是面…
多重继承 Python里允许多重继承,即一个类可以同时继承多个类: class Mammal(Animal): pass class Runnable(object): def run(self): print('Running...') class Dog(Mammal, Runnable): pass 这样,Dog同时拥有Mammal.Runnable的属性和方法. __slots__限制实例的属性 由于类的实例可以动态绑定新的属性,有时候我们不希望这样,可以通过__slots__进行限制:…
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475377.html 作业学习目标 学习并掌握Java Application程序结构: 学习并掌握Java语言的数据类型与变量: 学会使用Java运算符构造各类表达式: 掌握Java Application输入输出技术: 掌握Java流程控制技术(分支.循环): 掌握Math类.Strin…
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11475377.html 作业学习目标 适应老师教学方式,能按照自主学习要求完成本周理论知识学习: 掌握Java Application程序结构: 掌握Java语言的数据类型与变量: 学会使用Java运算符构造各类表达式: 掌握Java Application输入输出技术: 掌握Java流程控制…
正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: >>> class Student(object): ... pass ... >>> 然后尝试给它绑定一个属性: >>> s = Student() >>> s.name = 'BlaskManba' >>> s.age = 20 >>> print…