面向对象:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其 共性(属性) ,形成类。类中的大多数数据,只能用本类的 方法 进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过 消息(事件) 进行通信。程序流程由用户在使用中决定。
本例子中我理解的特征就是水果的重量,方法就是经过一天,事件(消息)就是方法用过后的结果

Fruit接口,提供减少重量和计算当前重量的功能。

    
  1. Option Explicit
  2. *******************************************
  3. Public Property Get CurWeight() As Double '计算当前的重量
  4. End Property
  5. *******************************************
  6. Public Function ReduceWeight() As Double '计算减少的重量
  7. End Function
Apple类实现Fruit接口
     
  1. Option Explicit
  2. Implements Fruit
  3. ***********************************************************
  4. Private mvarCurWeight As Double '定义当前重量的变量
  5. Private mvarTotalWeight As Double '定义总重量的变量
  6. ***********************************************************
  7. Private Sub Class_Initialize() '类的初始化
  8. mvarTotalWeight = 50 '起初总重量为50
  9. mvarCurWeight = mvarTotalWeight '当前的重量为50,
  10. '起初的重量也为50
  11. End Sub
  12. ********************************************************************
  13. Private Property Get Fruit_CurWeight() As Double '写入苹果当前重量
  14. Fruit_CurWeight = mvarCurWeight
  15. End Property
  16. **********************************************************************
  17. Private Function Fruit_ReduceWeight() As Double '苹果减少重量
  18. Dim oldWeight As Double '定义从前重量
  19. oldWeight = mvarCurWeight '从前重量等于当前重量
  20. mvarCurWeight = mvarCurWeight - 4 '苹果每天重量减少4
  21. '直到减少到苹果重量的3/5不再减少
  22. If (mvarCurWeight < mvarTotalWeight * 3 / 5#) Then
  23. mvarCurWeight = mvarTotalWeight * 3 / 5
  24. End If
  25. Fruit_ReduceWeight = oldWeight - mvarCurWeight '苹果减少重量为从前重量和当前重量之差
  26. End Function
Orange类实现Fruit接口

     
  1. Option Explicit
  2. Implements Fruit '连接Fruit接口
  3. *********************************************************
  4. Private mvarCurWeight As Double '定义当前重量变量
  5. Private mvarTotalWeight As Double
  6. *********************************************************
  7. Private Sub Class_Initialize() '类的初始化
  8. mvarTotalWeight = 30 '橘子的总重量为30
  9. mvarCurWeight = mvarTotalWeight '橘子的当前重量也为30
  10. End Sub
  11. *****************************************************************
  12. Private Property Get Fruit_CurWeight() As Double '写入橘子当前重量
  13. Fruit_CurWeight = mvarCurWeight
  14. End Property
  15. *****************************************************************
  16. Private Function Fruit_ReduceWeight() As Double '橘子减少的重量
  17. Dim oldWeight As Double '定义橘子从前的重量
  18. oldWeight = mvarCurWeight '橘子从前重量和当前重量相等
  19. mvarCurWeight = mvarCurWeight - 3 '橘子每天重量减少3
  20. '直到减少到橘子的3/5不再减少
  21. If (mvarCurWeight < mvarTotalWeight * 3 / 5#) Then
  22. mvarCurWeight = mvarTotalWeight * 3 / 5
  23. End If
  24. Fruit_ReduceWeight = oldWeight - mvarCurWeight '橘子减少的重量为从前重量和当前重量之差
  25. End Function
FruitBox类实现计算功能。

    
  1. Option Explicit
  2. Private mcol As Collection '定义一个集合,mcol是一个盒子
  3. **********************************************************
  4. Private Sub ReleaseFruits() '释放对象
  5. Dim aFruit As Fruit
  6. For Each aFruit In mcol
  7. Set aFruit=Nothing '对于每一个在盒子里的水果最后让其为0
  8. Next
  9. End Sub
  10. *****************************************************************
  11. Public Sub AddFruit(aFruit As Fruit)
  12. mcol.Add aFruit '向盒子里放入水果
  13. End Sub
  14. *****************************************************************
  15. Public Function TotalFruitWeight() As Double '实现计算水果总重量的功能
  16. Dim aFruit As Fruit
  17. Dim total As Double
  18. total=0 '起初总重量为0
  19. For Each aFruit In mcol
  20. total=total+aFruit.CurWeight '橘子和苹果的重量为总重量
  21. Next
  22. TotalFruitWeight=total
  23. End Function
  24. *******************************************************************
  25. Public Function PassOneDay() As Double
  26. Dim aFruit As Fruit
  27. Dim total As Double
  28. total=0
  29. For Each aFruit In mcol
  30. total=total+aFruit.ReduceWeight() '橘子和苹果的重量为总重量
  31. Next
  32. PassOneDay=total
  33. End Function
  34. *************************************************************************
  35. Public Function NumOfApples() As Long
  36. Dim aFruit As Fruit
  37. Dim count As Long
  38. count = 0
  39. For Each aFruit In mcol
  40. If (TypeName(aFruit) = "Apple") Then '加入的是苹果
  41. count = count + 1 '苹果数量+1
  42. End If
  43. Next
  44. NumOfApples = count '苹果的数量
  45. End Function
  46. *****************************************************************
  47. Public Function NumOfOranges() As Long
  48. Dim aFruit As Fruit
  49. Dim count As Long
  50. count = 0
  51. For Each aFruit In mcol
  52. If (TypeName(aFruit) = "Orange") Then '加入的水果为橘子
  53. count = count + 1 '橘子个数加1
  54. End If
  55. Next
  56. NumOfOranges = count '橘子的数量
  57. End Function
  58. ***************************************************************
  59. Private Sub Class_Initialize()
  60. Set mcol = New Collection '盒子为一个新的连接
  61. End Sub
  62. ***************************************************************
  63. Private Sub Class_Terminate()
  64. ReleaseFruits '释放对象
  65. Set mcol = Nothing '让盒子为0
  66. End Sub
类的实例化,From1代码编写。

    
  1. Option Explicit
  2. Dim box As FruitBox '定义一个盒子
  3. *******************************************************************
  4. Private Sub Command1_Click()
  5. box.AddFruit New Apple '盒子里加一个苹果
  6. End Sub
  7. ********************************************************************
  8. Private Sub Command2_Click()
  9. box.AddFruit New Orange '盒子里加一个橘子
  10. End Sub
  11. ********************************************************************
  12. Private Sub Command3_Click()
  13. Dim str As String
  14. Dim old As Double, reduce As Double, now As Double
  15. '定义从前的,减少的和现在的
  16. old = box.TotalFruitWeight() '调用FruitBox类的TotalFruitWeight方法
  17. str = "一天前总重量有:" & old '从前的重量
  18. List1.AddItem str
  19. str = "其中苹果有:" & box.NumOfApples() '调用FruitBox类的NumOfApples方法
  20. List1.AddItem str
  21. str = "其中橘子有:" & box.NumOfOranges() '调用FruitBox类的NumOfOranges方法
  22. List1.AddItem str
  23. reduce = box.PassOneDay() '调用FruitBox类的PassOneDay方法
  24. str = "一天损失重量:" & reduce
  25. List1.AddItem str
  26. now = box.TotalFruitWeight() '调用FruitBox类的TotalFruitWeight方法
  27. str = "当前重量:" & now
  28. List1.AddItem str
  29. List1.AddItem ""
  30. End Sub
  31. ********************************************************************
  32. Private Sub Form_Load() '创建盒子对象
  33. Set box = New FruitBox
  34. End Sub
  35. Private Sub Form_Unload(Cancel As Integer) '释放盒子对象
  36. Set box = Nothing
  37. End Sub
来自为知笔记(Wiz)

水果整理篇--苹果橘子相关推荐

  1. 水果怎么画?橘子怎么画?橙子怎么画?

    水果怎么画?橘子怎么画?橙子怎么画?绘画初学者如何练习?板绘初学者如何入门?学习绘画难吗?怎样才能学好插画?想必这些都是绘画初学者们经常在想的问题吧,就是不知道如何才能绘画出自己想要的东西,比如说想要 ...

  2. 【C# winform】操作系统:进程同步程序设计——多生产者多消费者苹果橘子实验

    实验内容 桌子上有一只盘子,最多可容纳两个水果,每次只能放入或者取出一个水果.爸爸专门向盘子中放苹果,妈妈专门向盘子中放橘子,儿子专门等待吃盘子中的橘子,女儿专门等吃盘子中的苹果.试编程实现爸爸.妈妈 ...

  3. php layui ajax多图上传,Laravel+Layer实现图片上传功能(整理篇)

    ♩ 背景 昨天在自己的 Laravel5.5 框架项目中,希望集成 Layer 的图片上传功能 但是在 ajax(POST) 提交请求时,一直显示 500 报错 ♪ 分析 ⒈ 问题所在 最后将核心代码 ...

  4. 打造IE6的position:fixed整理篇

    打造IE6的position:fixed整理篇 fixed真的是一个非常好的属性. 特别是做弹层的时候.可惜的是"国内主流浏览器"IE6大大不支持. 一般的我们都会通过CSS中的表 ...

  5. Docker整理篇(docker-compose与私服搭建)

    Docker整理篇(docker-compose) 安装与常用命令操作 Docker网络与数据卷 docker-compose与私服搭建 基本介绍 官网地址 https://docs.docker.c ...

  6. c语言分支编程改错题,二级C语言改错 二级C语言编程题 汇总整理篇.doc

    二级C语言改错 二级C语言编程题 汇总整理篇 360教育在线 宇创IT培训07年9月内部资料 内部资料,请勿公开传播 二.改错题 考试做题要求: 1.在/**********found******** ...

  7. c二级语言程序编程题,二级C语言编程题 汇总整理篇.doc

    二级C语言编程题 汇总整理篇 360教育在线 宇创IT培训07年9月内部资料 内部资料,请勿公开传播 三.编程题 考试做题要求: 1.按题目要求编写部分代码,不要改动已经有的代码. 2.在运行时如果遇 ...

  8. 天堂2单机服务端开外网整理篇

    ** 天堂2单机服务端开外网整理篇 ** 我们在玩天堂2单机或者想和朋友联机玩天堂2的时候,需要开外网 首先要确认,您的网络有无公网IP,有就继续往下看,没有公网IP, 下面的内容,对您就没什么意义了 ...

  9. 【Matlab水果识别】苹果质量检测及分级系统(带面板)【含GUI源码 1613期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]苹果质量检测及分级系统(带面板)[含GUI源码 1613期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

最新文章

  1. HotSpot虚拟机对象的创建过程
  2. boost::contract模块没有宏实现base types的测试程序
  3. SAP云平台 CloudFoundry环境下的space guid
  4. C/C++语言中字符串多行书写方法
  5. xul 创建一个按钮
  6. HTTPS之SSL处理过程,对此加密和非对称加密
  7. gem install 和 bundle 区别
  8. 解决Linux里面未启用网卡的问题
  9. Oracle之表示约束状态的关键字Enable/Disable/Validate/Novalidate
  10. finereport前端组件类思维导图
  11. 【图像融合】自适应参考图像的可见光与热红外彩色图像融合算法
  12. iOS开发之NSURLSession/NSURLConnection HTTP load failed 的解决办法
  13. 计算机兴趣小组学情分析,计算机兴趣小组计划、教案浅析.doc
  14. QQ动态表情包如何制作 堪比沙漠骆驼gif
  15. html5 手机号直接拨打,html5拨打电话及发短信
  16. 好看的菜单导航色彩搭配
  17. JS字符串格式化函数 string.format
  18. Http请求加密规则(3DES、Base64、HMAC SHA256)
  19. Ubuntu18.04安装教程——超详细的图文教程
  20. python儿童入门教程视频-Python入门视频全套教程

热门文章

  1. 大数据营销在旅游行业的应用方案
  2. 什么是电子邮件地址?
  3. 小叶入门之Python爬虫(一)
  4. JavaScript中文与阿拉伯数字互相转换
  5. Excel中数据透视表的使用(一)
  6. Python画美队盾牌
  7. Mybatis中的大于、小于、大于等于、小于等于、不等于的两种写法
  8. 章节专题2021-整合管理
  9. r1笔记第9天 逻辑英语随堂笔记 (01)
  10. 提升睡眠质量的助眠好物,拥有这些,不再担忧睡眠质量