第六章派生类型

合集下载

C++ 第6章继承和派生类

C++   第6章继承和派生类
i3 j2
A
a2
i1 k1
B的子对象a2 的数据成员 B 的 数 据 B的子对象a1 成 的数据成员 员 C 的 数 据 成 员
A
i1 k1
C
B
a1
i1 A k1
B的直接基类 A的数据成员
6.3 派生类的构造函数与析构函数
1.派生类构造函数 1)说明
基类的构造函数不被派生类继承。 创建派生类对象时,自动调用基类构造函
void print(){cout<<"a="<<a<<",";} int Geta(){return a;} private: int a; }; class Derived:public Base { private: int b; Base Ba; //子对象 public: Derived(){b=0;cout<<"Derived缺省构造函数\n";} Derived(int i,int j,int k):Base(i), Ba(j),b(k) { cout<<"Derived构造函数\n";} void print(){ //同名覆盖 Base::print(); //调用基类Base的print()函数 cout<<"b="<<b<<",Ba.a="<<Ba.Geta()<<endl; } };
第六章 继承和派生类
本章内容
继承性、基类和派生类的基本概念
派生类的定义和派生类对象的组成
派生类的构造函数和析构函数
赋值兼容规则
重点:掌握派生类的定义和派生类对象的组成; 派生类的构造函数和析构函数。

当代教育心理学(第三版)课件—第六章

当代教育心理学(第三版)课件—第六章
(一)有意义学习的实质、条件、类型 (二)认知同化过程 (三)接受学习的界定及评价
(一)有意义学习的实质和条件
1、实质:
所谓意义学习,奥苏贝尔认为就是将符 号所代表的新知识与学习者认知结构中已有 的观念建立非人为的(即某种内在的合理的 或逻辑基础上的联系)和实质性的(即非字 面的联系)联系。
2、条件:
外部条件:学习材料具有逻辑意义。
内部条件:学习者积极主动建立联系的倾 向性;学习者认知结构中有适当知识(材料 对学习者有潜在意义)利于建立联系;学习 者积极主动地获得新知识的实际意义(心理 意义)。
类型:表征学习

概念学习

命题学习
(二)认知同化论和先行组织者
意义学习是通过新信息与学生认知结构中已有的相关观 念的相互作用才得以发生的。 相互作用的结果导致新旧知识的意义同化,具体存在三 种认知同化机制
1、下位关系:新学习的内容类书于学生认知结构中已 有的、包摄性较广的观念,有两种形式:
派生类属:新内容可由已有内容直接派生,或仅仅是
命题的例证

相关类属:新内容扩展、修饰或限定已有命题,使其
精确化
2、上位关系:学习了一种可把一系列已有观念类属其
下的广义新命题
3、并列结合关系:同级别的内容互相影响,在相似性
而需以意识为中介
3、评价:
尽管该理论欠完整系统,实验范围也有限,但对 反对当时联结论的机械性和片面性有重要意义,对 于当前创造科学的学习理论体系也有重要意义。
(二)托尔曼的认知-目的说
1、经典实验:
(1)位置学习实验:白鼠走迷津。说明
白鼠是依据认知地图来行动的。(2)奖励预
期实验
(3)接受学习的界定及评价 奥苏贝尔认为,接受学习不同于发现学习,是

教育心理学第六章知识要点讲解

教育心理学第六章知识要点讲解

教育心理学第六章知识要点讲解第六章知识的学习(重点章节)1、知识学习的类型2、记忆系统及特点3、遗忘进程特点4、遗忘原因及理论解释5、记忆规律的运用第一节知识学习概述一、知识的含义及实质知识就是个体通过与环境相互作用后获得的信息及其组织。

其实质是人脑对客观事物的特征与联系的反映,是客观事物的主观表征。

二、知识的类型(一)根据反应活动的深度不同,知识可分为感性知识和理性知识所谓感性知识是对活动的外表特征和外部联系的反映,可分为感知和表象两种水平。

感知是人脑对当前所从事的活动的对象的反映。

表象是人脑对从前感知过但当时不在眼前的活动的反映。

所谓理性知识,反映的是活动的本质特征与内在联系,包括概念和命题两种形式。

概念反映的是活动的本质属性及其各属性之间的本质联系。

命题也就是我们通常所说的规则、原理、原则,它表示的是概念之间的关系,反映的是不同对象之间的本质联系和内在规律。

(二)根据反映活动的内容的不同,知识分为具体知识和抽象知识。

具体知识是对一定时间和地点发生的事实或事实的反映,是对我们看到或听到的事情的心理再现。

具有情境性和时空依赖性。

抽象知识是对于已知事实的概括性的反映,表现为概念、原理、公式、法则等。

(三)根据反映活动的形式不同,知识可以分为陈述性知识和程序性知识1.两者含义:陈述性知识也叫描述性知识,是个人能用言语进行直接陈述的知识。

程序性知识也叫操作性知识,是个体难以清楚陈述、只能借助于某种作业形式间接推测其存在的知识。

2.两者区别:首先,陈述性知识主要用来回答事物是什么、为什么和怎么样的问题。

可用来区别和辨别事物。

目前学校教学传授的主要是这类知识。

程序性知识主要用来解决做什么和怎么做的问题。

其次,从心理表征看,陈述性知识主要以概念、命题和命题网络的形式表征,程序性知识以产生式和产生式系统表征。

3.两者联系:陈述性知识的获得常常是学习程序性知识的基础,程序性知识获得后也为获取新的陈述性知识提供了可靠保证。

6-第六章 陆源碎屑岩

6-第六章 陆源碎屑岩

(2)孔隙胶结——最常见的颗粒支撑结构,碎屑颗粒
构成支架状,颗粒之间多呈点状接触,胶结物含量少,只
充填在碎屑颗粒之间的孔隙中。
成岩期或后生期化学沉淀的产物
(3)接触胶结——亦为颗粒支撑结构,颗粒之间呈点接触或
线接触,胶结物含量少,分布于碎屑颗粒相互接触的地方。 可能是干旱气候条件下的砂层,因毛细管作用,溶液沿颗 粒间细缝流动并沉淀形成的;或者是原来的孔隙式胶结物经地 下水淋滤改造而成的。
(4)镶嵌胶结——在成岩期的压固作用下,特别是当压 溶作用明显时,砂质沉积物中的碎屑颗粒会更紧密地接触,颗 粒之间由点接触发展为线接触、凹凸接触,甚至形成缝合线接 触(亦称无胶结物式胶结)。
5. 接触类型
按颗粒间的接触性分为: 点接触 线接触 凹凸接触
缝合线接触
碎屑颗粒接触性质示意图
10%,其它占5%,命名为:含砾粗砂质中砂岩
② 若碎屑岩的粒度分选较差,所含粒级较多,没有含量 >50%的粒级,而含量介于50~25%的粒级又不止一个,进行 复合命名,以“××—××岩”的形式表示,含量较多的写
在后面。
③ 若碎屑岩的粒度分选更差,粒度含量均<25%,则应将
此岩石的全部粒度组分分别合并为砾、砂和粉砂三大级别,然 后按前两条原则命名。
3. 颗粒的表面结构
表面结构是碎屑颗粒表面的形态特征,一般 主要观察表面的磨光程度及表面蚀痕迹两个方面。 研究方法:电子显微镜能够识别的环境有滨
海、风成、冰川等环境。
(1) 霜面似毛玻璃,在反向光 下看,表面模糊不清,一般认为 是砂丘石英颗粒的特征。
(2) 磨光面是光滑磨亮的表面,
如河流的石英砂,海滩石英砂。 (3) 刻蚀痕迹是由碰撞作用造成 的,如冰川作用。 (4) 在海滩带及海的近岸地带, 石英砂粒表面具有机械成因的 “V”形坑。

继承与派生

继承与派生

#include <iostream.h> class A Ex7_2 { public: void f(int i){cout<<i<<endl;} void g(){cout<<"g\n";} }; class B:A //缺省继承是私有继承方式 { public: void h(){cout<<"h\n";} A::f;//将基类中的公有成员说明为派生类的公有成员 }; void main() { B d1; d1.f(6); d1.g(); d1.h(); }
输入设备
鼠标
手写板
2. 派生类是基类定义的延续 先定义一个抽象基类,该基类中有些操作并未实 现。然后定义非抽象的派生类,实现抽象基类中定 义的操作。例如,虚函数就属此类情况。这时,派 生类是抽象的基类的实现,即可看成是基类定义的 延续。这也是派生类的一种常用方法。 3. 派生类是基类的组合 在多继承时,一个派生类有多于一个的基类, 这时派生类将是所有基类行为的组合。派生类将其 本身与基类区别开来的方法是添加数据成员和成员 函数。因此,继承的机制将使得在创建新类时,只 需说明新类与已有类的区别,从而大量原有的程序 代码都可以复用,所以有人称类是“可复用的软件 构件”。
private
不可访问
基类与派生类的关系
任何一个类都可以派生出一 个新类,派生类也可以再派生出新 类,基类和派生类是相对而言的。 基类与派生类之间的关系可以有如下 几种描述: 1. 派生类是基类的具体化 类的层次通常反映了客观世界 中某种真实的模型。在这种情况 键盘 下,不难看出:基类是对若干个 派生类的抽象,而派生类是基类的具体 化。基类抽取了它的派生类的公共特 征,而派生类通过增加行为将抽象类 变为某种有用的类型。

教育心理学第六章知识点整理

教育心理学第六章知识点整理

第六章知识学习第一节知识学习概述知识是信息的表征。

按照所表征的信息类型与表征方式的不同,分为陈述性知识与程序性知识两类。

陈述性知识:能够描述或者识别客体、事件、观念等,是指人类心智表征事实、观念与概念的方式,由于能够用口头或书面语言的方式来陈述这种知识,故而得名。

时间序列储存的是个体对事件发生的时间顺序的知觉;表象是表征物体物理特征与空间结构的信息组块;命题是表征观念及概念间有意义联系的信息组块,是一种基于语言的表征;陈述性知识的整合与组织机制主要是图式或陈述性知识网络——图式:是个体在特定领域中拥有的有组织和内在联系的陈述性知识的记忆结构;陈述性知识网络:是陈述性知识的组块被表征为相互联系的节点,从而形成由时间序列、表象及命题形成的网络;程序性知识:是指导个体如何执行动作技能和心智技能的知识。

程序性知识所表征的技能有一个重要特点——自动化。

条件部分储存了能够激发行为的环境条件和心理条件的相关信息;行动部分储存了指导心智和身体行动的信息;程序性知识的整合与组织机制主要是产生式系统——产生式系统包含一系列产生式,它们逐个被激活从而完成一个复杂的行为。

也就是说,产生式系统的激活会使一系列离散的行为形成一个连锁,并且以顺畅且相对自动化的方式运行,知道达到主要目标。

知识分类的教学含义?区分陈述性知识和程序性知识对教师的教学设计和实施非常重要,如物理中的一些概念和事实可以被学生表征为陈述性知识,而一些实验所需的技能则可被学生表征为程序性知识,教师需要理解两种知识的性质、表征方式及它们是如何被学习的,在此基础上才能进行有效教学。

符号学习:是指学习单个符号或一组符号的意义,或者说学习符号本身代表什么,奥苏伯尔称之为“表征学习”。

符号学习的主要内容是词汇学习。

概念学习:是指掌握概念的一般意义的过程,实质上是通过学习掌握同类事物的共同的关键特征和本质属性。

概念同化:用定义的方式,让学习者利用认知结构中原有的有关概念来理解新的概念。

派生类型

派生类型
TYPE(point), INTENT(IN) :: pt a = MAX( pt%x, pt%y )
END SUBROUTINE max_point END MODULE cartesian
program assignexample USE cartesian IMPLICIT NONE REAL :: a
目录
第一节 派生类型 第二节 操作符重载
第一节 派生类型
派生类型是指用户利用Fortran系统内部类型,如整型、 实型、复数型、逻辑型、字符型等的组合自行创建出一个 新的数据类型,它们实际上是由内部数据类型形成的某种 结构。
派生类型还可由其它派生类型创建而来 TYPE[,访问属性说明::] 派生类型名
CONTAINS INTEGER FUNCTION num( s, c ) CHARACTER(len=*), INTENT(IN) :: s CHARACTER, INTENT(IN) :: c num = 0 DO i = 1, LEN( s ) IF( s(i:i) == c ) num = num + 1 END DO END FUNCTION num
CHARACTER(10) TELEPHONE
ห้องสมุดไป่ตู้
REAL, DIMENSION(20)
::MARKS
END TYPE
TYPE(STUDENT) STUDENT1, STUDENT2 TYPE(STUDENT), DIMENSION(100) ::CLASS01
第一节 派生类型
派生类型的成员也可以是派生类型
END MODULE MATTER
第一节 派生类型
缺省初始化 TYPE STUDENT CHARACTER(20) NAME REAL ::MARK = 60 character(20) tel END TYPE

VC++6.0入门【第六章 创建和使用对话框】

VC++6.0入门【第六章 创建和使用对话框】

第6章创建和使用对话框对话框是一种用户界面,几乎每一个Windows程序都使用对话框与用户进行交互。

对话框可能是一个简单的只含有OK按钮的消息框,也可以是一个复杂的数据输入表单。

对话框上有一些方便用户输入的控件,对话框依靠这些控件与用户进行交互,其实质是一个接收消息的窗口。

在本章节我们主要讲述模式对话框和无模式对话框的原理和使用方法,下一章将详细介绍各种控件的使用。

你将学习创建一个对话框,使用对话框模板编辑一个对话框资源,并在程序中调用对话框的方法。

6.1 对话框的基本原理6.1.1 对话框的工作原理在创建一个对话框之前,我们先来了解一下对话框是如何工作的,对话框的数据来自三方面:对话框资源、对话框对象、和一个文档对象:1.对话框资源对话框资源是一个用户输入或取得数据的图形界面。

这个图形界面是使用Develop Studio的对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。

当应用程序运行时,就可以得到一个对话框。

2.对话框对象MFC使用CDialog类来描述对话框,它是CWnd类的派生类。

在CWnd类的基础上增加了数据交换的功能。

当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。

对话框对象实现了对话框和应用程序之间的通信。

在应用程序中定义一个对话框对象后,在对话框显示前,可以通过访问对话框对象的成员变量为一个对话框的控件初始化,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。

3.文档对象MFC使用文档对象描述应用程序处理的数据,用户输入的数据要进一步的处理,通常要先存贮到文档对象中。

例如:一个学生记录处理的应用程序,用户通过一个对话框输入学生记录并贮存到一个文件中。

应用程序的处理顺序是:用户在对话框中输入信息,通过对话框对象得到输入信息,将输入信息整理到文档对象中,使用序列化函数将文档对象存贮到一个文件中,所以文档对象扮演了一个很重要的数据交换的角色。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SEQUENCE 则规定派生类型成员按声明次序存储。
针对上述创建的学生数据类型,

TYPE(Student) student1,student2
声明变量 student1。
TYPE(Student),DIMENSION(100) ::class
声明派生类型数组class。
派生类型的变量声明类似于固有类型,在类型名称前添加 TYPE 关键字, 形式如下:
!电话号码

REAL,DIMENSION(20)
::Marks !各科成绩

END TYPE
构造派生类型的形式为:
TYPE [ [,access] ::] name

component – definition
END TYPE [name]
access代表 PRIVATE 或 PUBLIC 关键字,在模块中定 义数据类型时使用,缺省为 PUBLIC。若规定为 PRIVATE, 则该数据类型只能在模块内使用;
Fortran 95 允许在定义派生类型时,直接给出成员的默认值。如给出成 员 Mark 的默认值为60 :

TYPE Student

CHARACTER(20) NAME

REAL :: Mark = 60

END TYPE
初始化时,成员的默认值将被构造子的表达式列表所覆盖,例如:
TPYE(Student) :: stu1 = Student(“Smith,JR”, 49)

TYPE(Student),INTENT(in)::this

PRINT*,this

END SUBROUTINE
END MODILE
PROGRAM Main

USE Stu_Type

IMPLICIT NONE

TYPE(Student)::stu

CALL Student_(stu,”Smith,JR”)
CALL Student_(stu,“Smith,JR”)
!省略可选参数
CALL Student_(stu,“Smith,JR”,70.0) !传入可选参数
(3)如果派生类型的成员是公有的,可以通过派生类型变量名直接输出其成员 (见例6-1);如果派生类型的成员是私有的,需要设计专门的输出例程(见 例6-2)
!引用定义的派生类型模块

IMPLICIT NONE

TYPE(Student)::stu1=Student(“Smith,JR”,49),stu2
!在声明派生类型变量 stu1 时,用派生类型构造子对其初始化

PRINT*,‘输入stu2的成员:’

READ*,stu2

PRINT*,stu1,stu2,Student(“Bloggs”,50)
CONTAINS

SUBROUTINE Name_From_Student(String,Student)

CHARACTER(*),INTENT(OUT) ::String

TYPE(Student_Type),INTENT(IN) ::Student

String = Student%Name


CALL Print_Student(stu)
END PROGRAM
程序说明:
(1)由于将派生类型的成员声明为私有的,不能在模块外部对其初始化。在程 序中设计了一个类似于 C++ 构造函数的公有例程,以便对其初始化;
(2)使用了可选参数设计构造例程,在初始化时可以灵活决定是否传入可选参 数,例如:
实例6-4:在模块IntegerSets 中定义了一个派生类型 SET (类似于 Pascal 语言中的集合类型),该类型的数据由函数 BuildSet 产生; 定义一个集合关系操作符(.IN.),如果整数 I 是集合 S1 中的成员,那 么表达式 I.IN.S1 返回逻辑真;操作符(*) 被重载,以执行交集操作, 例如,S1*S2 返回集合 S1 和 S2 中共有的数据,假如操作数为固有 数据类型,操作符(*)仍执行乘法运算。
第三节 操作符重载
定义:
假如有某一派生类型的变量 a 和 b,要执行加法运算,我 们自然希望使用“+”运算符,写出表达式 “a+b”,但编 译时会出错,因为编译器不知道该如何完成这个加法操作 (Fortran 90 预定义运算符的运算对象只能是固有数据类 型),这时需要我们自己编写程序说明 “+” 在作用于该派 生类型的变量时,该实现什么样的功能,这就是操作符的 重载,或者是运算符重载。
分类:
Fortran 90 的操作符重载,分为赋值操作符重载和其他操 作符重载。
说明:
操作符重载是对已有的操作符赋予多重含义,使同一操作 符作用于不同类型的数据时产生不同的行为。
1. 赋值操作符重载
将姓名字符串直接赋给派生类型变量,如:

stu = “Smith,JR” !stu 为 Student 派生类型变量
这里的49覆盖了成员 Mark 的默认值60。
说明:如果在模块中定义派生类型时将成员声明为 PRIVATE,则不能
使用构造子进行初始化。例 6-2 所示为派生类型的私有构造
例 6-2 派生类型的私有构造
MODULE Stu_Type


IMPLICIT NONE TYPE Student
将数组 class 所有元素的 Female 成员设置为男性。
Student2 = Student1
将 Student1 的所有成员赋给 Student2 的对应成员,同一个派生 类型的2个变量可以相互赋值。
第二节 派生类型的构造及初始化
例6-1,定义一个简单的学生类型,用来说明派生类型的构造

CHARACTER(*),INTENT(in)::n

REAL,OPTIONAL,INTENT(in)::m

this%Name=n

IF(PRESENT(m))THEN

this%Mark=m

ELSE

this%Mark=60

END IF

END SUROUTINE

SUBROUTINE Print_student(this)
从派生类型变量中提取姓名,将派生类型变量直接赋给姓名字 符变量。如:

StuName = stu
! StuName 为字符类型变量
以上操作中需要重新定义赋值操作符,使之可以处理字符类型 和派生类型组成的混合类型。
对第一种情况,需要编写带有两个虚参的子程序例程 (Student_From_Name),两个虚参分别为派生类型和字符 类型,其顺序必须和赋值表达式中出现的顺序相同。在该例 程中,需要显式地将字符参数赋给派生类型的姓名成员;
END PROGRAM !在主程序中使用该派生类型,
派生类型构造子的形式为:

d – name (expr - list)
d – name 指派生类型名;
expr – list 为规定派生类型成员值的表达式列表,表达式的次序、类型、 种类数必须和定义派生类型成员的一致;
派生类型构造子可以出现在初始化中,也可以出现在赋值、输入/输出语 句中。
例6-4 其他操作符重载
MODULE IntegerSets
IMPLICIT NONE
INTEGER, PARAMETER::MaxCard = 100
TYPE SET

PRIVATE
! 规定成员在模块外不可访问

INTEGER Cardinality

INTEGER, DIMENSION(MaxCard)::Members

TYPE(派生类型名) [[,属性] ::] 变量列表
派生类型成员可以和同类型的变量一样使用,但引用派生类型成员时, 须使用成员操作符%,例如:
student1 % Birthdate = 461121
对派生类型变量 student1 的 Birthdate 成员进行赋值。
class % Female = .FALSE.
对第二种情况,是第一种情况的反操作,即子程序例程 (Name_From_Student)的两个虚参分别为字符类型和派生 类型,且将派生类型的姓名成员赋给字符参数。
详见例6-3
例 6-3 赋值操作符重载
MODULE StudentMod

IMPLICIT NONE

TYPE Student_Type

CHARACTER(20)NAME

REAL Mark

END TYPE

INTERFACE ASSIGNMENT(=) !接口块须以 ASSIGNMENT 命名

MODULE PROCEDURE Name_From_Student,

Student_From_Name

END INTERFACE


TYPE Student

CHARACTER(20) Name
!姓名

CHARACTER(10) No
!学号

LOGICAL Female
!性别

INTEGER BirthDate
!出生年月

CHARACTER(20),DIMENSION(4) ::Address !地址

CHARACTER(10) Telephone
第六章 派生类型
固有数据类型,数组集合的元素要求类型相同。 用户定义类型或派生类型,Fortran 90 允许定义不同类型元
相关文档
最新文档