SV基础知识3---Class类和Package

目录

1 类和对象的概述

面向对象OOP的基本概念(三要素:封装、继承、多态)

验证为什么要用OOP: 

创建对象(实例说明,):

句柄的使用

对象的复制(深复制和浅复制)

静态变量和静态方法

2 类的成员

概述

类的封装

3 类的继承

概述

句柄的使用

4 包的使用

包的定义

包的命名规则与使用


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仍指向该对象

对象的复制(深复制和浅复制)

  • 10
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值