黑马程序员-关于抽象编程

黑马程序员—编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?定义一个动物类,在动物类(animal)中有一个叫的抽象方法。 写两个子类,一个猫一个狗, * 继承自动物类,并实现相应的抽象方法。 package com.itheima; /*  *第9题:   * 编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?定义一个动物类,在动物类(animal)中有一个叫的抽象方法。 写两个子类,一个猫一个狗,  * 继承自动物类,并实现相应的抽象方法。  */ abstract class Animal {   //动物的种类用变量n表示    String n; 阅读详情
---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------

 抽象编程( Abstract Programming ) 抽象分行为抽象和数据抽象两种. 

行为抽象

  通俗地说便是将一个行为序列归并 (抽象)为一个行为的过程.例如:将取碗筷、盛饭、盛菜,扒一口饭、夹一筷菜、再扒一口饭、再夹一筷菜的若干重复,然后放下碗筷的过程归并为吃饭. 

数据抽象

  通俗地说,就是将事物归类,或者说,将事物看成是一定型号、规格的数据,然后将性质接近的数据归纳(抽象)为一类.例如:将圆、三角形、长方形归为形状类. 数据结构一系列性质相同的数据, 组织成一定的逻辑结构, 并带有自身的一系列操作例如:整型向量不同整型值是一系列性质相同的数据;其数据集合存放在向量中,便是组织成线性存储结构;向量自身有创建、复制、扩建、增删、修改等操作,外加排序、查找等算法可以调用.所以,整型向量在语言中是一种具体的数据结构。 

  抽象编程通过抽象的方法来减少编程工作量或有效地减轻编程难度称为抽象编程 将问题通过功能分解,各个击破的编程方法(过程化编程) 是一种以行为抽象为主的抽象编程 将问题通过实体分析,分层分类地实现抽象数据类型,从而进行简单应用编程(基于对象编程)是一种以数据抽象为主的抽象编程,这种抽象编程,通过数据类型复用,方便编程,方便维护和扩展,其效果比过程化编程更好编程语言中没有许多具体的数据类型,要解决实际问题,很大部分工作是要建立数据模式与实际问题的对应,也就是建立抽象数据类型的过程对象化编程就是基于分层分类的抽象数据类型之具体编程,它能更好地实现数据结构和算法,便是将N.Wirth的程序公式:程序=算法+数据结构具体化为:程序=算法+抽象数据类型 

编程质量 (Programming Quality ) 

可读性

  通过使用更好的编程方法可以从本质上改进可读性通过使用定义良好的算法和语句控制结构,可以局部改进算法的可理解性通过学习和使用优秀程序员的编码习惯,采用一贯的编码风格,可以增强可读性注意:高级程序员与初学者对可读性的把握分寸是不同的易编程性:只是对采用好的编程方法或更高级语言而言,抽象程度越大,越易编程对象化编程在抽象数据类型的创建上做了大量的工作,因而赢得了应用程序编写的方便与快捷比如数组,无法整体复制,无法扩容,但是向量则可以。 

安全性

  编程在算法设计上是挖空心思的劳动过程,而在运用语言对之描述上应该潇洒自在:容易表达,不容易出错,运行上更安全。好的编程方法能够帮助程序员实现潇洒编程抽象数据类型中可以将大量安全代码嵌入其中,从而使应用编程潇洒自在实现抽象数据类型的过程本身也是使用其他抽象数据类型的应用编程,同样也充满着潇洒与自在 void f(char* s) { string s1,s2=s; //第一种 s1=s; char* st=new char[strlen(s)+1]; //第二种 strcpy(st,s); char a[40]; //第三种 strncpy(a,s,sizeof(a)); a[sizeof(a)-1]=‘\0’; } 

可维护性

  指局部修改不影响系统全局的总体性能,而系统产生的问题通常可以通过局部维护(修改或更换部件) 来解决。模块化编程使程序可拆装,可局部修改,而不影响整体性能与工作,因而可维护性强,过程化编程是将过程模块化,具有一定的可维护性;对象化编程是将数据类型也模块化,从而导致更方便的维护性能可扩充性:指系统扩展时,只增加扩展代码,而对原系统的正常运作只作很少的修改甚至不修改功能扩展的影响:过程化编程,会涉及多处扩展代码与原系统不和谐所带来的修改对象化编程,如果是抽象数据类型的功能扩展,则不会影响原系统的正常运行,而只是支持应用程序中增加的一些扩展代码而已;如果是应用程序功能扩展,那是使用抽象数据类型的抽象代码扩展,其修改量比之低级代码要少效率 

程序维护

  ( Program Maintenance ) 维护要求:数个数m,m若改为根据当前小孩的序号与m的和来确定个数m,则在进行数个数前,先要进行表达式计算,这一切,都是在Josephus类中暗中完成的,所以只要修改Josephus类的getWinner 无须修改应用程序,便可维护好系统. 

程序扩展

  ( Program Extension ) 既要求直接数m个数,最后所获得的1个胜利者,也要求按维护要求的数法所获得的胜利者此时,便要保留原来的求胜利者的成员函数,再设计实现一个成员函数,作为功能扩展再在原系统中增加调用该成员函数的语句由于小孩转圈的结构没有变,所以该扩展要求就不涉及链表修改

---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------
面向抽象编程 NULL 博文链接:https://xiongjiajia.iteye.com/blog/1727025 立即下载

相关推荐

抽象编程 公开课

斯坦福大学公开课:抽象编程,含讲义课件、考试内容和作业内容。

android_开发中那些踩过的和没踩的坑

类和对象抽象类和抽象方法注意点1. 抽象方法必须写在抽象类中,反之则不一定;

buxiangzhao的博客 420

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置)

本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。

weixin_29611239的博客 409

课程设计报告一:面向抽象编程基础

类是对现实世界对象的抽象,而对象是类的具体实例。简单一点理解,就是定义了一个abstract类和一个abstract方法,再定义一个或几个abstract类的子类,在子类中重写abstract类中的abstract方法(子类中重写的方法不再是abstract方法),然后就可以只声明一个abstract类,再利用 上转型对象 对其重写的方法进行调用。也就是说 当设计某种重要的类时,不让该类面向具体的类,而是面向抽象类,即 设计类中的重要数据 是 抽象类的对象 ,不是具体类声明的对象。方法可以计算柱体的体积。

yangjizhou160105的博客 1155

基于Python+OpenCV中文及符号检测

一、项目背景与意义在图像处理、文档识别、自动翻译等场景中,中文及符号的准确检测是一个重要且复杂的任务。传统的字符检测方法往往对英文等拉丁字母系的识别效果较好,但对中文及特殊符号的识别准确率较低。本项目旨在利用Python编程语言结合OpenCV库,开发一个能够高效、准确地检测图像中中文及符号的系统,为相关领域的研究和应用提供技术支撑。二、技术实现图像预处理:利用OpenCV的图像处理功能,对输入的图像进行灰度化、二值化、滤波去噪等预处理操作,以提高中文及符号检测的准确性[1]。

2301_79809972的博客 1121

Unity Spine 3.8 (URP) 踩坑(Shader报错修改)

提供了新思路,打算尝试一下URP。但美术使用的spine版本是3.8,项目用的Unity2021.3.11f1c2,直接导入spine URP包,shader报错:half4 不能转成 SurfaceData2D;Spine-Sprite-StandardPass-URP-2D.hlsl 也报这个错,也是同样的改法即可。今天搜索spine优化,看到一篇文章。

hrlr1230的博客 4570

计算机文化历史科技

抽象:程序员必备的能力 作者: 刘欣  发布时间: 2016-07-02 13:29  阅读: 546 次  推荐: 1   原文链接   [收藏]     http://www.iqiyi.com/v_19rrkcy5es.html?vfm=2008_aldbd&fc=828fb30b722f3164&fv=p_02_01       2015年大热的动画片《动脑特工

MAGANG255的博客 724

基于强化学习方法的PID参数整定

前言 PID控制器在工业界应用非常广泛,但是PID的参数调节一般需要人工根据经验法来试。对于有经验的工程师来说,一般试几次就可以获得满足调节的参数。然而对于新手工程师却很难确定一套比较好的参数。 这里我们采用强化学习的方法来调节PID参数。 这个例子展示了如何使用双延迟深度确定性策略梯度(TD3:twin-delayed deep deterministic policy gradient)强化学习算法来调整PI控制器。整定控制器的性能与使用Control System Tuner app整定的控制器的性能

weixin_42188287的博客 2万+

Java语言程序设计——面向抽象编程:

1、设计一个抽象类Geometry,该类包括抽象方法getArea(),用于计算面积,getCircum()方法,用于计算周长; 2、设计一个柱状类Pillar,在类中使用抽象类声明变量,该类具有求体积方法getVolume(),用于求柱体积;具有求面积方法getAreas(),用于求柱体表面积。 3、设计类:圆,矩形,正方形,三角形;这些类继承抽象类Geometry,重写getArea()和getCircum()方法。 4、设计一个类AppTest,使用上转型对象来计算圆柱体积和表面积,圆柱底 ..

chl白色的耳朵 3391

DDR内存条选购避坑指南:单Rank vs 双Rank性能实测对比(附2024年颗粒推荐)

本文深入解析了内存条中单Rank与双Rank设计的原理与性能差异。通过实战测试对比,揭示了双Rank内存在高负载场景(如3D渲染、视频剪辑)中凭借Rank Interleaving技术带来的显著性能优势,并提供了2024年针对不同用户需求的DDR4/DDR5内存选购策略与避坑指南。

ik678901的博客 1138

Explorer.exe系统错误,电脑重启后刚开始一段时间正常,过一会桌面任务栏就卡死,可以打开任务管理器

联想E14Win10专业版。

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 8053

JAVA-面向抽象编程

JAVA中的面向抽象编程思想

qq_48635698的博客 1554

【FPGA教程案例100】深度学习1——基于CNN卷积神经网络的手写数字识别纯Verilog实现,使用mnist手写数字数据库

MNIST 数据库有一个 60,000 示例的训练集,还有一个 10,000 示例的测试集。这些数字已在大小方面规范化,在固定大小的图像中居中。如下图所示:我们任意选择0~9是个数字,将其转化为数字:0_0.txt1_0.txt2_0.txt3_0.txt4_0.txt5_0.txt6_0.txt7_0.txt8_0.txt9_0.txt。

FPGA/MATLAB学习教程/源码/项目合作开发 7832

黑马程序员---java面向抽象/接口编程

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 面向抽象编程:指的是设计某些重要的类时,不让该类面向具体的类,而是面向抽象类。即设计中重要的数据是抽象类声明的对象,而不是具体类声明的对象。 重点: 1.abstract类的使用:abstract类只关心操作,不关心这些操作具体的实现细节。 2.多态:使用多态进行程序设计,核心技术之一是

Matrixofcsuft的专栏 847

出现 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the 解决方法

Access to XMLHttpRequest at 'http://127.0.0.1:5000/api/data' from origin 'http://10.197.0.79:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

码农研究僧的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

黑马程序员_理解编程中抽象的概念和分层的思想

------- Windows Phone 7手机开发、.Net培训、期待与您交流! ------- 这篇文章主要介绍的编程思想称为抽象,认真看一下,我觉得对你的编程很有好处。今天恶补了一下C语言,学到结构体时觉得书上的例子很不错,拓展了一下,理解抽象的精髓。这些思想在.net上也完全是通用的。 先看部分代码: //复数的结构体 struct complex_struct

坚持才是硬道理 1896

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

黑马程序员--java基础复习--抽象类、抽象方法和面向父类编程

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! --------------------- 抽象的概念:   抽象就是把一些事物的共性提炼出来,放到一个类中,把这些事物的不同之处交给子类去实现,比方说人都要吃东西,就可以给人一个吃东西的抽象方法,每个人在吃东西的时候就要自己确定到底吃什么,怎么吃,和谁吃。  java中...

liujkh123的博客 236

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

黑马程序员C++教程从0到1入门编程56类与对象--纯虚函数和抽象类

黑马程序员C++教程从0到1入门编程56类与对象--纯虚函数和抽象类c++中纯虚函数的定义方式纯虚函数的特点普通计算机类的写法 c++中纯虚函数的定义方式 纯虚函数是一种特殊的虚函数,它的一般格式如下:   class <类名>   {   virtual <类型><函数名>(<参数表>)=0;   …   };   在许多情况下,在基类中不能对虚函...

浪里小河马的博客 304

黑马程序员C++核心编程笔记--4 类和对象--多态

多态是C++面向对象三大特性之一多态分为两类静态多态和动态多态区别:-静态多态的函数地址早绑定 - 编译阶段确定函数地址-动态多态的函数地址晚绑定 - 运行阶段确定函数地址下面通过案例进行讲解多态总结:多态满足条件有继承关系子类重写父类中的虚函数多态使用条件父类指针或引用指向子类对象重写:函数返回值类型 函数名 参数列表 完全一致称为重写。

2501_90434822的博客 766

盘点教的好、口碑好的Web前端培训班

自己自学的时候很艰难,也听了很多不同的老师讲课。有风格幽默的像讲相声的,有言简意赅全程干货的。更多的是像流水一样就知道敲代码念ppt的。 我把觉得不错的分享出来,希望能够对你有帮助,少踩坑。首先是黑马程序员,相信很多入门的小伙伴都是b站上听pink老师的课入门前端的。确实讲的很不错,基础的内容比较扎实,跟着一步步走能够掌握html和css,写个静态页不成问题。 但是感觉黑马程序员别的老师就没有pink老师那种风格。我了解到他们的java才是侧重学科,所以在前端的积累可能没那么深,其他老师我听过,他们的j

weixin_70255972的博客 3316

java多线程(三)线程的六种状态

这里写目录标题一级目录二级目录三级目录 一级目录 二级目录 三级目录

你佳哥 205

Java基础学习——面向对象

java基础学习之面向对象完整知识点(参考黑马程序员资料)

liuwenhui666的博客 1051

Java—抽象方法与接口

简单介绍Java抽象方法和接口。

2301_80162458的博客 389

《黑马程序员》C++核心编程(二)

黑马程序员C++教程笔记

ZONGXP的博客 4885

黑马程序员总结文档汇总

这篇日志,是这些日子以来观看传智播客视频写的一篇汇总文档,蓝色标识的超链接是doc类型的文档,绿色标识的超链接是思维导图类型的文档,同时两种类型的文档中每篇都提供了文档下载链接,详细内容如下:   黑马程序员 01 Java基础教学 - 01 - 认识Java                                黑马程序员 02 Java基础教学 - 02 - 走进Java

kongbeily的专栏 2143

【黑马程序员】 java笔记——抽象类

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 抽象类 一、面向对象(抽象类1) 当多个类中出现相同功能,但是功能主体不同,这是可以进行向上抽取的。这时,只抽取功能定义,而不抽取功能主体。 抽象:看不懂。 抽象类的特点: 1、  抽象方法

他山之石 可以攻玉 1012
上一篇: 黑马程序员-jQuery Select操作大集合
下一篇: win7 下游戏不能全屏解决
步飞烟
博客等级 码龄15年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值