-
vb.net教程之vb.net的OOP结构什么是oop
vb.net的OOP结构什么是oop
OOP(Object-Oriented-Programming)是相对于结构化程序设计(Structure Programming)而言的,表示采用面向对象的思想进行软件的编制。它是当今最流行的编程模式。“面向对象”技术追求的是软件系统对现实世界的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间。面向对象编程和以前的编程思想有所不同,因为它把一个新的概念--对象,作为程序代码的整个结构的基础和组成元素。而类就是对象的抽象和概括,类是数据、属性和方法的封装,从某种角度来讲,类就像一个没有界面的控件。对象的定义:对象是现实世界中的一个实体。它有如下特征:有一个名字以区别于其他的对象;有一个状态用来描述它的默写特征;有一组操作,每一个操作决定于对象的一种功能或行为,对象的操作可分为两类:一类是自身承受的操作,一类是加于其他对象的操作,是其自身所具有的状态特征及可以对这些状态施加的操作结合在一起所构成的独立实体。
例如下面这个例子:
对象的状态:
对象名:张三
性别:女
身高:1.65米
体重:55公斤
对象的功能:
回答体重
回答身高
回答性别
教概率课
当家教
在计算机世界中可以把对象看成是存储中的一个可标识的区域,它能保存固定或可变数目的数值。对象的划分并没有惟一的标准,它依赖于设置对象的目的和所需要的操作。一个对象的状态并不是完全用来直接为外界服务的,但其本身是能够为外界服务的基础。所以对象的特征表现为:模块的独立性,也就是模块内部状态不因外界的干扰而改变,模块间依赖性小,各模块可独立为系统所组合选用和复用;动态连结性,即通过消息激活机制,把对象之间动态联系在一起,使整个机制运转起来,便称为对象的连结性;易维护性,就是对象的功能被“隐藏”,修改完善功能被局限于该对象的内部,不会波及到外部。
在面向对象系统中,对象之间的联系是通过消息来传递的。消息,是对象之间相互请求或相互协作的途径,是要求某个对象执行某个功能操作的规格的说明。它有如下的性质:
(1)同一个对象可接收不同形式的多个消息,产生不同的响应;
(2)相同形式的消息可以送给不同对象,所做出的响应可以是截然不同的;
(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必须的。
消息分为公有消息和私有消息,由外界对象直接向其发送的消息是公有消息;而由自己向本身发送的,不对外开放,外界不必了解的是私有消息。
以上我们主要扼要地讨论了一下对象及它的一些特性,现在我们就可以提出类的概念了。类,是对一组客观对象的抽象,它将该组对象所具有的共同特征(包括结构特征和行为特征)集中起来,以说明该组对象的能力和性质。在计算机世界的系统构成上,类形成了一个具有特定功能的模块和一种代码共享的手段。
面向对象的系统都具有三个特性:封装性、继承性和多态性
封装:将一个数据和与这个数据有关的操作集合放在一起,形成一个能动的实体--对象,用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象即可。目的在于将对象的用户与设计者分开,用户不必知道对象行为的细节,只需用设计者提供的协议命令对象去做就可以。
继承:继承所表达的就是一种对象类之间的相交关系。它使得某类对象可以继承另外一类对象的特征和能力。
若类间具有继承关系,则它们之间应具有下列几个特性:
(1)类间具有共享特征(包括数据和程序代码之间的共享);
(2)类间具有细微的差别或新增部分(包括非共享的程序代码和数据);
(3)类间具有层次结构。
多态:多态性描述的是同一个消息可以根据发送消息对象的不同采用多种不同的行为方式。
所以说,面向对象的程序可以看成就是这样一些具有数据、方法的对象之间的作用。用户在设计程序的时候就需要特别注意对类的选取和设计。
栏目列表
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比