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

上一篇 / 下一篇  2017-08-18 19:28:11 / 个人分类:专业学习

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的核心概念是把数据和相关的方法封装成一个类。类中的数据默认被定义为私有的。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2017-09-18  
     12
3456789
10111213141516
17181920212223
24252627282930

数据统计

  • 访问量: 924
  • 日志数: 8
  • 建立时间: 2017-07-04
  • 更新时间: 2017-08-18

RSS订阅

Open Toolbar