stariain的个人空间 https://blog.eetop.cn/1260220 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

《System Verilog验证测试平台编写指南》读书笔记:第五章 面向对象编程基础

已有 1745 次阅读| 2017-8-18 19:28 |个人分类:专业学习|系统分类:硬件设计

5.1概述

5.2考虑名词,而非动词

5.3编写第一个类

类封装了数据和操作这些数据的子程序

5.4在哪里定义类

SV中可将类定义在programmodulepackage中,或者在这些块之外的任何地方。本书只给出类在程序块中使用的情况。

5.5 OOP术语

类(class)、对象(object)、句柄(handle)、属性(property)、方法(method)、原型(prototype

5.6创建新对象

Verilog的实例名只能指向一个实例,而SV句柄可指向很多对象(一次只能指向一个)。

对象的声明和分配空间。

定制构造函数(new函数):构造函数除了分配内存外,还初始化变量。还可以在对象中定义new函数来讲初始化的默认值设为想要的数值。

避免在声明一个句柄时调用new函数。

new()和new[]的区别。

为对象创建一个句柄:对象与句柄的区别,需要动态创建对象的原因。

5.7对象的解除分配  (句柄=null

SV的句柄只能指向一种类型

5.8使用对象

对对象使用“.”来引用变量和子程序。

5.9静态变量和全局变量

可以在类中创建一个静态变量(static声明),被这个类的所有实例共享,使用范围仅限于这个类。

通过类名访问静态变量:(类名::静态变量名)(“::”即为类作用操作符)。静态变量在声明时初始化,不能在构造函数中初始化。

5.10类的方法

类中的程序也称作方法(taskfunction

5.11在类之外定义方法(extern    作用域操作符)

5.12作用域规则

SV中可以在begin end中声明变量。 变量的名字可以相对于当前作用域,也可以用绝对作用域标示,例如以$root开始。

this:指向类一级的变量?

5.13在一个类中使用另一个类

在一个类中使用另一个类时,最好在上层类的构造函数中完成类的实例化。

编译顺序的问题:使用typedef语句声明一个类名。  ???软件顺序执行,识别不到?

5.14*理解动态对象(研究书中的例子更好)

将对象传递给方法

在任务中修改句柄

在程序中修改对象

5.15*对象的复制

使用new操作符可以复制一个对象。若类中包含一个指向另一个类的句柄,此时只有最高一级的对象被new操作符复制。

编写自己的简单复制函数

编写自己的深层复制函数

使用流操作符从数组到打包对象,或者从打包对象到数组。

5.16公有和私有

    OOP的核心概念是把数据和相关的方法封装成一个类。类中的数据默认被定义为私有的。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 2

    评论
  • 1063

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-10 19:35 , Processed in 0.026825 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部