目录
1 类和对象的概述
类是将相同的个体抽象出来的描述方式,对象是实体,具有相同属性和功能的对象就属于同一类。
类的定义核心就是属性声明和方法定义,所以类是数据和方法的自洽体,既可以保存数据又可以处理数据,这是类与结构体在数据保存上最重要区别。
面向对象OOP的基本概念(三要素:封装、继承、多态)
验证为什么要用OOP:
原因:验证环境中不同组件其功能和所需处理的数据内容是不相同的;
不同环境的同一类型的组件其所具备的额功能和数据内容是相似的。
基于以上两点,验证世界的各个组件角色分明、功能独立、与面向对象编程的要素十分符合。
创建对象(实例说明,):
实例
总结oop概念要素:
class类:基本模块包含了成员变量和方法,是一个软件“盒子”;
object对象:类的实例,“软件”例化;
handle句柄:指向对象的指针,通过句柄可以索引对象的变量和方法;
property属性:在类中声明的存储数据的变量;Method方法:类中function和task
句柄的使用
◆当句柄指向一个对象时, SystemVerilog不会释放该对象的内存空间(对象的创建)
◆如果没有句柄指向个对象, Systemverilog将释放该对象的内存空间(对象的销毁)
◆将句柄设置为null,将手动释放所有的句柄(销毁所有)
◆可以通过句柄来使用对象中的成员变量和方法
实例:
Transaction t1, t2; //声明两个句柄
t1 = new();//创建一个对象,并将t1指向该对象
t2 = new();//创建一个对象,并将t2指向该对象
t1 = t2; //将t2的值赋予t1,这时t1和t2指向同一对象,t1之前指向的对象被释放
t1.display();//调用对象的成员方法
t1.addr = 32'h42;//给对象成员赋值
t2 = null; //t2指针悬空,很危险;但t1仍指向该对象