1. 《面向对象概念演示》的设计过程
  2. 功能

    该程序实现的基本功能:

  • 有猫和狗两种动物;
  • 可以对他们体检,对于猫,大于7岁为old,否则为young;对于狗大于2岁为old,否则为young;
  • 会发出叫声,显示对应的图片;
  1. 继承关系

  2. 实现过程
  • 创建项目,并命名为"Animal-1.lvproj":

  • 右键单击"我的电脑",新建-类,新建一个类,并命名为"Animal-1.lvclass":

  • 双击"Animal-1.ctl",打开并编辑Animal-1类的私有数据:

  • 创建方法make sound.vi:创建类的方法时有2个选择,分别是"基于动态分配模板的VI"和"基于静态模板的VI"。基于动态分配模板的VI:在被继承时,可以改写同名VI,实现不同的行为,可以实现类的多态;基于静态模板的VI:只能被继承,不能被改写。

    所有的动物都会发声,但是每种动物发出的声音不一样,所以在父类中定义一个虚函数"make sound.vi",选择"基于动态分配模板的VI",子类可以改写该方法,实现多态,其程序框图如下图所示:

  • 创建方法,set property.vi:需要设置父类中的私有数据(age和类别),该方法不允许子类修改,所以采用"基于静态模板的VI",其程序框图如下图所示:

并将"age"和"类别"连到前面板的接线端口;

  • 创建方法,body test.vi:该方法的功能是获取私有数据的值,并根据年龄判断结果是old还是young,采用"基于静态模板的VI"。"猫"分子如下图所示:

"狗"分支如下图所示:

并将age、类别、结果连到接线端。

  • 在新建Cat和Dog类前,先建立2个文件夹"Cat-1"和"Dog-1"用于保存这2个类中的数据和方法;
  • 新建猫类:新建一个类,命名为"Cat-1.lvclass";右键选择属性-继承-更改继承,选择"Animal-1"为其父类,"继承所选类":

该类中的数据全部继承于Animal-1类,没有私有数据;

新建Cat-1类的方法:make sound.vi,采用"基于静态模板的VI",用于模拟Cat发声:

新建Cat-1类的方法:set property-1.vi,采用"基于静态模板的VI",用于设置Cat-1类的属性。在程序框图中选择编程-簇、类和变体-调用父方法(只能这样调用父方法,否则不行。)程序框图如下:

修改后的前面板如下图所示:

  • 用同样的方法创建狗类。其程序框图如下:

其前面板如下:

  • 新建vi"Animal Test-1.vi"用于演示程序,前面板如下图所示:

程序框图如下图所示:

该程序采用生产者-消费者循环,生产者循环随机设置猫或者狗的属性,消费者循中的"body test.vi"调用父类中的方法;"make sound.vi"实现了多态,根据不同的对象,调用不同的方法。

源程序见这个链接:http://download.csdn.net/detail/lab_fans/9872285#

LVOOP(二)、面向对象概念演示相关推荐

  1. C++面试题-面向对象-面向对象概念

    C++面试题-面向对象-面向对象概念 问:说说C++和C的主要区别? 答: C语言属于面向过程语言,通过函数来实现程序功能.而C++是面向对象语言,主要通过类的形式来实现程序功能. 使用C++编写的面 ...

  2. [黑马IOS自学第九篇]OC语言基础,面向对象概念,类的创建,OC多文件开发等

    Extends Coc .EnhancedCc++/ .C-like c# 会在github上开源一个库,如果是私有库要交钱,自己o公司的项目不要勾 会把源代码提交上去 <span style= ...

  3. C++动态二维数组演示的代码

    将代码过程中经常用到的代码珍藏起来,下边资料是关于C++动态二维数组演示的代码. #include <iostream> #include <string>using name ...

  4. Algorithm:【Algorithm算法进阶之路】之数据结构二十多种算法演示

    Algorithm:[Algorithm算法进阶之路]之数据结构二十多种算法演示 目录 一.数据结构算法 1.顺序表 2.链表 3.栈和队列 4.串的模式匹配 5.稀疏矩阵 6.广义表 7.二叉树 8 ...

  5. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  6. Python面向对象-概念、类、实例

    Python面向对象-概念.类.实例 OOP--Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  7. 实验二 面向对象(一)(预习报告)

    面向对象--Java实验报告 实验二:Java面向对象(二) 实验二 面向对象(一)(预习报告) <center> <strong>姓名:</strong> < ...

  8. 实验二 面向对象(一)

    面向对象--Java实验报告 实验二:Java面向对象(二) 实验二 面向对象(一) <center> <strong>姓名:</strong> <u> ...

  9. 心理统计学 笔记 (二) 基本概念

    主目录 文章目录 二. 基本概念 Data type Graph Type 三. 概率分布 参考 心理统计 视频, 心理统计 视频 二. 基本概念 Data type Constant: Fixed ...

最新文章

  1. Python | [a for b in c for a in b]的用法
  2. 使用代码创建BRF ruleset
  3. remobject 簡介
  4. ios支付 选择货币_iOS开发中金钱货币的计算问题
  5. centos7永久修改ip地址
  6. Mac电脑优化工具箱MacCleaner PRO
  7. #ifdef 支持Mac #ifndef 支持Windows #if defined (Q_OS_WIN) 应该可以再两个系统通用
  8. 当前日期增加自然月(比如当前时间为3月31号,加上1个月,预期结果是4月30日,但是输出了5月1日)...
  9. 海康linux 密码忘记,linux下调用海康sdk
  10. linux svn备份,SVN完全备份svnadmin hotcopy
  11. Excel直接跳过隐藏行,粘贴数据到可见单元格
  12. mysql 复制方式_MySQL数据库复制表的几种方式讲解
  13. 基于龙芯CPU中标麒麟操作系统的国产半实物仿真系统ETestDEV
  14. 天啦噜!Stateflow动态测试竟然so easy
  15. Android USB串口打印结账单小票
  16. 如何自动注册推特推广号,推特注册的具体步骤
  17. mysql查询性别语句_MySQL查询语句简单操作示例
  18. 2021-11-30 vue移动端卖座电影项目(四) 当前项目代码
  19. 扒一扒你不知道的《经济学人》大家族
  20. springboot 健康饮食管理系统

热门文章

  1. YL-236点阵汉字LED显示C语言
  2. 什么是智慧社区 智慧社区解决方案概括
  3. uboot和Linux内核移植
  4. 怎么办理质量管理体系认证证书ISO9001?
  5. 什么是Unicode编码
  6. 网页如何打开php文件怎么打开,PHP文件怎么打开?打开PHP文件方法介绍
  7. 【快速上手系列】使用Springboot集成Swagger2的简单使用测试
  8. STM32控制编码器电机实现【速度闭环控制】与【位置闭环控制】
  9. 网页设计技巧:如何做好图片与文字的配合?
  10. CISAW证书发证机构是哪里?权威性如何?