OOAD[1]:类型的意义

引言:
在之前工作中,或者博客园中看别人写文章会经常提到一个词“类类型”,那么什么是类类型呢?类型与类究竟什么区别呢?

为什么会存在类型?类型存在的意义是什么?



(一)那什么是类型什么是类呢?
类:人类,动物类,植物类,金融行业这一类的。。。。。。。

抽象类,密封类,嵌套类,这不是在面向对象里面说的那一套吗?

就那人类这个词来解释下好了,这个词我也不知道是谁造的,它是一个统称,它不是指张三

也不是李四,它是一组统称,正如“白马非马”里面的马。关于类型我个人认为是对类的一个

定位一个描述。

强类型,弱类型,静态类型,美女类型,帅哥类型。。。。。好像有点扯远了,

还有int 类型,string 类型,其中我记得最多的时候是在C#里面有操作符,is,

as ,当前类型是这个类型吗?在JS里面有个函数叫TypeOf():看看当前对象是

什么类型的,最多的好像是这个吧alert(typeof(当前某个对象));当然在对数

据库进行数据管理的时候也存在各种各样的类型:char类型,varchar类型......

用过数据库的人都知道:如果要存软件0602班级每个学生的出生日期,一般会给当前字段用:datetime,

如果要存名字:varchar了,如果要存成绩这个,int了,呵呵当然,(如果这三个字段我都用varchar,

也没问题,只要给适当的长度就可以了),一般我不会这么干,那为什么我不会这么干?这个问题很

复杂了:我是个特别喜欢包包的女孩子:1我有红色的钱包(赚钱用的,还有卡卡),2还有装书用的书包

(去学校还书的时候比用的),3装衣服还有吃的旅行包(回家看老爸时候装好吃的还有衣服的)

4一个女孩子当然还要有背包了(其实算是臭美用的吧)......我只把钱放到钱包里面,我不会把衣服

放到钱包里面,我也不会用装衣服的箱子去装钱(我还是感觉把钱放到银行比较安全),同样的道理,

计算机就是一个模拟我们日常生活的一个模仿器,一个个类型代表不同的“箱子”,不同的“箱子”装不同的

东西,比如varchar这个”箱子“,可以装很多东西,你可以自己设这个箱子的大小,来确定装多大的东西。

现在我们应该明白一个道理:不同类型的东西需要不同类型的容器进行存储

(二)类型描述

类型的起源是出自人类的抽象数据理论。

大家都知道:抽象是我们用来研究这个世界一个手段,或者说是一种方式:比如我说植物,大家肯定会想

植物的一些基本特征:不会说话,会制造氧气等等,那么植物这个概念,最初是有研究生物的那个特别无聊

的人给的一个定义,其实这家伙就是想让我们更有层次感的去认识这个复杂的世界而已,才起了一个这么个抽象的

不容易理解的名字。抽象是我们认知这个世界的一个处理手段。

学过面向对象的人都知道一个概念:

类     术语是 class
类型  术语是 type

“一个类型是关于数据结构或行为属性的准确描述,一组疏通共享这些属性”


类型的定义?

“类型是关于一个对象的类的强制规定,这样一来,不同的类型对象不能相互使用,或者只是

他们的交互使用受到非常严格的限制”

类型会有很多:强类型(C#),弱类型(JS),无类型(这个没学过),但是他们都可以称为是面向对象的。

类型的强与弱,是指类型的一致性(这句话好难理解呀)。

类型匹配是类型概念的核心。

还是回到我们认识这个世界的开始抽象概念,为了描述距离时间速度,我们的前人写了个公式是:

路程除以时间等于速度,不等于重量。

我们的前人规定的:路程时间速度是一组抽象的匹配,意思就是说,这几个变量必须在一块。

这就是我们说的类型匹配。

强类型的好处:

1.如果没有类型检查(强类型会自动的进行类型检查),大部分语言的程序在运行时会以某种神秘的方式“崩溃”
2.在大多数系统里面,编辑--编译--调试循环很频繁,所以早期错误检查是必不可少的,强类型语言很重要哦。
3.类型声明有助于为程序编写文档
4.如果声明类型,大部分编译器可以生成有效的目标代码


经常写代码的时候,看一个方法,第一件事情就是看看这个函数返回什么类型的(基本是强类型语言了C#),

js是种弱类型语言,在第一次给当前参数赋值的时候,决定当前对象是什么类型。关于无类型,我了解甚少

以及这三种类型之间的语言的定义(也就是说强类型语言,弱类型语言,无类型语言靠什么区分开来的)。


类型的列子:静态类型与动态类型

这个概念与类型的强与弱是完全不同的,静态类型与动态类型是指:名字与类型绑定的时间.

静态类型的定义:也成为静态绑定,早期绑定,意味着:所有的变量与表达式在编译的时候已经固定

动态类型:是迟后绑定,所有的变量与表达式在运行式才知道

一种语言可以是强类型也可以是静态类型---ada

一种语言可以是强类型也支持动态类型---c++,java

一种语言即是无类型也支持动态类型---smalltalk

    多态(polymorphism)是动态类型与继承互相作用出现的一种情况。多态是一个名字(如:一个变量的声明),
可以代表许多不同类的对象,这些类具有共同的超类。这个名字所代表的对象因此可以响应一组共同的对象。


那么什么是类类型呢?
如果我说INT类型,枚举类型大家都能理解,然后我说int是个内置的类,枚举也是个内置的类,那我在说
int与枚举都是类类型。这是从一个角度进行解释的。

类一般可以实例化为对象,也就是我们编码中的class,根据类可以创建很多对象,美女类,可以创建美女,
可以创建n个美女。而这里美女类型,只是对当前美女的一个描述。

总结:
1.一般在编码的时候我们习惯去拿当前对象是什么类型,一般是判断,然后进行下面什么样的操作
2.根据类型进行类型直接的转换,比如我们经常会将INT类型去转化为String类型,为什么我们需要转化,
那就是上面所说的类型匹配。就好比不同型号的手机充电器,几乎是不能通用的。
3.类型是关于一个对象的类的强制规定,这样一来,不同的类型对象不能相互使用,或者只是
他们的交互使用受到非常严格的限制

备注:关于类与类型严格的说不是一回事,但是区分这两个概念没太大价值,只要说类实现了类型就足够了。






转载于:https://www.cnblogs.com/muer/archive/2011/08/14/OOAD1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值