(delphi11最新学习资料) Object Pascal 学习笔记---第7章第1节(引入类和对象)

第7章 对象

​ 即使你没有面向对象编程(OOP)的详细知识,本章也将介绍每一个关键概念。如果你已经精通OOP,你可以相对快速地浏览材料,并将重点放在Object Pascal语言的细节上,与你可能已经掌握的其他语言进行比较。

Object Pascal中的OOP支持与C#和Java等语言有很多相似之处,它也与C++和其他静态和强类型语言有一些相似之处。相反,动态语言倾向于提供对OOP的不同解释,因为它们以更松散和灵活的方式处理类型系统。

C#Object Pascal之间许多概念有相似之处是由于这两种语言都是同一个设计师Anders Hejlsberg。Anders是Turbo Pascal编译器的原作者,也是Delphi的Object Pascal第一版的原作者,后来他跳槽到微软并设计了C#(以及最近的JavaScript衍生物TypeScript)。你可以在附录A中关于Object Pascal语言历史的内容。

7.1 引入类和对象

Object Pascal和其他面向对象的编程语言中,经常使用类和对象这两个术语。 然而,由于它们经常被误用,让我们确保从一开始就对它们的定义达成共识:

  • 是一个用户定义的数据类型,定义了一种状态(或表示)和一些操作(或行为)。换句话说,一个类有一些内部数据和一些方法,以过程或函数的形式存在。类通常描述了许多相似对象的特征和行为,尽管也有专门用于单个对象的特殊类。
  • 对象是类的一个实例,即由类定义的数据类型的变量。对象是实际存在的实体。程序运行时,对象占用一些内存来存储其内部表示。
  • 对象和类的关系与其他变量与其数据类型之间的关系相同,不同之处在于对象变量有一个特殊的名称,即实例。

历史: 面向对象编程(OOP)术语可以追溯到最早采用这一模型的几种语言,如Smalltalk。然而,后来为了使用在过程性语言中的术语,最初的面向对象术语很大一部分而被取消。因此,尽管诸如类和对象之类的术语仍然常用,但您通常更常听到调用方法这一术语,而不是原始术语向接收者(对象)发送消息。关于OOP术语及其如何随时间演变的全面详细指南可能很有趣,但在这本书中需要太多篇幅。

7.1.1 类的定义

​ 在Object Pascal中,您可以使用以下语法定义新的类数据类型(TDate),其中包含一些本地数据字段(Month、Day、Year)和一些方法(SetValue、LeapYear):

typeTDate = classFMonth, FDay, FYear: Integer;procedure SetValue(M, D, Y: Integer);function LeapYear: Boolean;end;

注解: 我们已经在记录中看到过类似的结构。就定义而言,记录与类相当相似。在内存管理和其他方面存在差异,本章后面将详细介绍。尽管如此,从历史上看,在Object Pascal中,这个语法首先用于类,然后被移植到记录。

Object Pascal 的惯例是使用字母 T 作为你编写的每个类名称的前缀,就像其他类型一样(事实上,T 代表 Type)。对编译器来说,T 只是一个字母,与其他字母无异。——但这是如此常见,遵循这个习惯会使您的代码更容易被其他程序员理解。

​ 与其他语言不同,Object Pascal 中的类定义不包括方法的实际实现(或定义),而只包括方法的签名(或声明)。这使得类代码更加紧凑,可读性大大提高。

小贴士: 虽然看起来进入方法的实际实现要花费更多时间,但编辑器允许你使用 Shift+Up 和 Shift+Down 组合键从方法声明导航到方法实现,反之亦然。此外,在编写类定义后,还可以使用 “类完成”(Class Completion)(光标在类定义中时按 Ctrl+C 键)让编辑器生成方法定义的骨架。

此外,除了编写类的定义(包括字段和方法)外,您还可以编写一个声明。声明中只有类名,如:

typeTMyDate = class;

​ 之所以要写这样的声明,是因为你可能需要让两个类互相引用。在 Object Pascal 中,一个符号只有在定义后才能使用。因此,要引用一个尚未定义的类,就需要声明。我写下面的代码片段只是为了向你展示语法,并不是说它有任何意义:

typeTHusband = class;TWife = classFHusband: THusband;end;THusband = classFWife: TWife;end;

​ 您可能在实际代码中遇到类似的交叉引用,这就是为什么记住这种语法很重要的原因。 请注意,与方法一样,在单元中声明的类必须在稍后的同一单元中完全定义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式ID(7):Zookeeper实现分布式ID生成

1 原理 实现方式有两种,一种通过节点,一种通过节点的版本号 节点的特性持久顺序节点(PERSISTENT_SEQUENTIAL) 他的基本特性和持久节点是一致的,额外的特性表现在顺序性上。在ZooKeeper中,每个父节点都会为他的第一级子节点维护一份顺序,用于记录下每个子节点创建的先后顺序…

虚拟机中安装Win98

文章目录 一、下载Win98二、制作可启动光盘三、VMware中安装Win98四、Qemu中安装Win981. Qemu的安装2. 安装Win98 Win98是微软于1998年发布的16位与32位混合的操作系统,也是一代经典的操作系统,期间出现了不少经典的软件与游戏,还是值得怀念的…

Kafka - This server does not host this topic-partition

问题描述 org.apache.kafka.common.errors.UnknownTopicOrPartitionException: This server does not host this topic-partition 原因分析 分区数据不在。producer 向不存在的 topic 发送消息 解决方案 用户可以检查 topic 是否存在设置 auto.create.topics.enable 参数

【LiveVideoStack】批量下载公众号文章

livevideostack暂停商业运行 官方建议关注文章保存,因此: y9000p 上运行: xiaoguyu / wechatDownload 大神太厉害了,工具软件很好很强大 windows 试试直接安装、编译、运行 zhangbin@LAPTOP-DFV9CMRA MINGW64 /g/ISOFT/livevideostack $ git clone https://github.com/xiao…

安卓多个listView拖动数据交换位置和拖动

注意这里只是给出大概思路&#xff0c;具体可以参考修改自己想要的 public class MainActivity extends AppCompatActivity {private ListView listView1;private ListView listView2;private ArrayAdapter<String> adapter1;private ArrayAdapter<String> adapter…

研发效能DevOps: OpenEuler 部署 drone 持续集成平台

目录 一、实验 1.环境 2.OpenEuler 部署 drone 持续集成平台 二、问题 1.drone登录失败 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统架构版本IP备注LinuxopenEuler22.03 LTS SP2 192.168.204.145&#xff08;动态&#xff09; 192.168.204.141&…

jenkins容器中安装python遇到问题

在Jenkins容器中安装配置Python时遇到问题 执行./configure --prefix/opt/python3/时遇到configure: error: no acceptable C compiler found in $PATH 这个问题就是缺少gcc编译环境。将gcc安装上即可&#xff1a; yum install -y gcc##前提是容器里的系统是cenos才可以&#…

`sh -c`命令——解决命令权限问题、一条命令中执行多个指令

sh -c在Shell中执行一个字符串作为命令&#xff0c;可以在一条命令中执行多个指令。 目录 语法如下&#xff1a;案例 使用sh -c与直接终端敲命令的区别使用sh -c解决命令权限问题 语法如下&#xff1a; sh -c command其中&#xff0c;command是要执行的命令或命令串。 案例 …

Excel下拉自动填充

1、选中需要下拉填充的单元格&#xff0c;按下Ctrl&#xff0c;然后再往下拖动填充。 下拉结果&#xff1a; 2、选中两个连续的单元格&#xff0c;往下拖动填充&#xff0c;可以填充增加两数差。 下拉结果&#xff1a; 本文为学习笔记&#xff0c;所参考文章均已附上链接&#…

【Node.js从基础到高级运用】六、创建第一个 Node.js 应用

创建第一个 Node.js 应用 在这一节中&#xff0c;我们将引导你创建你的第一个 Node.js 应用——一个简单的 “Hello World” 程序。这将帮助你熟悉 Node.js 项目的基本结构和模块化编程的概念。 步骤 1: 初始化项目 首先&#xff0c;创建一个新的目录作为项目的根目录&#…

设计模式前置了解uml图

在开发前&#xff0c;会进行系统的设计&#xff0c;而数据模型的设计大多通过 UML 类图实现。为了在 UML 类图中清晰地表达类之间的关系&#xff0c;需要对类之间的关系有一定的认识&#xff0c;并且了解相关的表达符号。 类之间的关系有以下几种&#xff1a; 组合 聚合 关联…

个人商城系统开源(配置支付宝支付!)

原文地址&#xff1a;个人商城系统开源&#xff08;配置支付宝支付&#xff01;&#xff09; - Pleasure的博客 下面是正文内容&#xff1a; 前言 由于近期实在没有什么话题可写和一些有趣的项目教程可以分享。所以我只能决定将我自己亲手编写的一个迷你迷你商城系统进行开源…

手机和电脑同步的好用记事本软件有哪些

我常常需要随手记录各种信息&#xff0c;以便随时查阅和使用。比如&#xff0c;在下班路上&#xff0c;我会用手机记录明天要处理的工作事项、购物清单&#xff0c;或是某个突然迸发的创意想法&#xff1b;而在办公室&#xff0c;我则需要在电脑上整理会议纪要、项目计划&#…

java学习(集合)

一.集合(主要是单列集合和双列集合) 1.集合的框架体系&#xff08;两大类&#xff09; 2.collection接口是实现类的特点&#xff1a; 1)collection实现子类可以存放多个元素&#xff0c;每个元素可以是Object 2)有效Collection的实现类&#xff0c;可以存放重复的元素&#…

案例分析篇04:数据库设计相关28个考点(1~8)(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12601310.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

基于Llama 2家族的提示词工程:Llama 2 Chat, Code Llama, Llama Guard

Prompt Engineering with Llama 2 本文是学习 https://www.deeplearning.ai/short-courses/prompt-engineering-with-llama-2/ 的学习笔记。 文章目录 Prompt Engineering with Llama 2What you’ll learn in this course [1] Overview of Llama Models[2] Getting Started wi…

华为配置ISP选路实现报文按运营商转发

Web举例&#xff1a;配置ISP选路实现报文按运营商转发 介绍通过配置ISP选路实现报文按运营商转发的配置举例。 组网需求 如图1所示&#xff0c;FW作为安全网关部署在网络出口&#xff0c;企业分别从ISP1和ISP2租用一条链路。 企业希望访问Server 1的报文从ISP1链路转发&#…

大语言模型提示工程简介

提示工程是一个较新的学科&#xff0c;应用于开发和优化提示词&#xff08;Prompt&#xff09;&#xff0c;帮助用户有效地将语言模型用于各种应用场景和研究领域。掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。研究人员可利用提示工程来提高大语…

卷积神经网络CNN(一篇文章 理解)

目录 一、引言 二、CNN算法概述 1 卷积层 2 池化层 3 全连接层 三、CNN算法原理 1 前向传播 2 反向传播 四、CNN算法应用 1 图像分类 2 目标检测 3 人脸识别 六、CNN的优缺点 优点&#xff1a; 1 特征提取能力强 2 平移不变性 3 参数共享 4 层次化表示 缺点…

生成式 AI:使用 Pytorch 通过 GAN 生成合成数据

导 读 生成对抗网络&#xff08;GAN&#xff09;因其生成图像的能力而变得非常受欢迎&#xff0c;而语言模型&#xff08;例如 ChatGPT&#xff09;在各个领域的使用也越来越多。这些 GAN 模型可以说是人工智能/机器学习目前主流的原因&#xff1b; 因为它向每个人&#xff0…