面向对象的程序设计用什么比喻最恰当?

文舞西2022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
娃哈哈26 共回答了26个问题 | 采纳率80.8%
用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭.所谓盖浇饭,北京叫盖饭,东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜.我觉得这个比喻还是比较贴切的.
  蛋炒饭制作的细节,我不太清楚,因为我没当过厨师,也不会做饭,但最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀.盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝.
  蛋炒饭的好处就是入味均匀,吃起来香.如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了.盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了.盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香.
  到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长.如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费.
  盖浇饭的好处就是"菜""饭"分离,从而提高了制作盖浇饭的灵活性.饭不满意就换饭,菜不满意换菜.用软件工程的专业术语就是"可维护性"比较好,"饭" 和"菜"的耦合度比较低.蛋炒饭将"蛋""饭"搅和在一起,想换"蛋""饭"中任何一种都很困难,耦合度很高,以至于"可维护性"比较差.软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性.面向对象的好处之一就是显著的改善了软件系统的可维护性.
1年前

相关推荐

用c# 做 已知一点和一三角形的三点坐标,判断其位置关系 在三角形内 还是外 (面向对象的思想)
kittylovingki1年前1
随风逝然 共回答了21个问题 | 采纳率95.2%
这个要看你的算法了,用穷举法,或者逆推法.穷举法就是:列举点在三角形内的所有条件{1,2,3,4,5.循环},同理在三角形外边的条件一样列举.逆推法:假如该点在三角形内满足什么条件,然后一步一步推出原始的条件.自己试试练练吧--------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
分成3部分解决这个问题,1、点在线上(在线上也在三角形内部,判断点到其中一个边的的距离为0时即在线上)2、点在三角内部(判断三角形三个顶点所在在象限A(x1,y1),B(x2,y2),C(x3,y3)三个点,D(x,y)点的坐标满足条件为(x的值大于3点最左点的值小于最右点的值,y的值小于最上方点的y轴值大于最下方点y轴值)你可以把这个过程封装在一个对象里,如果这个对象成立就能判断了,根据象限)3、点在外部
用C++面向对象的方法和对象数组方法来验证卡布列克运算
用C++面向对象的方法和对象数组方法来验证卡布列克运算
给定任意一个四位整数 N(N>0),其各位数字不完全相同.这个数必有这样的规律:
1) 把组成 N 的四个数字从小到大排列,构成最小四位数 min ;
2) 把组成 N 的四个数字从大到小排列,构成最大四位数 max ;
3) 然后求 max 与 min 之差,得到一个新的四位数 ;
重复以上过程,最后总能得到结果:6174.要求本题采用面向对象的方法和对象数组来完成来完成.
举例:4321-1234=3087;8730-0378=8352;8532-2358=6174;……
C lass NB{
int n ,max ,min ,max_min; // n为任意一个四位整数.
public:
NB( ){
min=max=max_min=0;
}
int operating (int );//run the process to validate 6174; result=6174?1;0
void display( );//show max;min;max_min;
};
int main( ){
int count=0 ;
NB nb[200] ; // 建立对象数组;
for( int i=1000; i
一只小蝌蚪1年前0
共回答了个问题 | 采纳率
面向对象不仅进行功能抽象还要进行什么抽象
心随鹤归1年前1
曹天骄 共回答了16个问题 | 采纳率100%
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.
抽象包括两个方面,一是过程抽象,二是数据抽象
面向对象的基本概念1)对象:对象是客观实体的抽象表示,是由描述对象的属性数据和对这些数据进行的操作行为两部分组成。对象的
面向对象的基本概念
1)对象:对象是客观实体的抽象表示,是由描述对象的属性数据和对这些数据进行的操作行为两部分组成。对象的特征:•具有一个状态,由与其相关联的属性值集合所表征。•具有唯一的标识名,可以区别于其他对象。•有一组操作方法,每个操作方法决定对象的一种行为。•对象的状态一般只能被自身的行为所改变。•对象的操作包括自操作(施于自身)和它操作(施于其他对象)。•对象之间以消息传递的方式进行通信。•一个对象的成员仍可以是一个对象。(2)类l 类是具有相同属性和行为的对象集合的抽象描述;l 类的内部包括属性和行为两个主要部分。l(3)实例 类是对具有相同属性和行为的一组对象的抽象描述。因此,类可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的实际例子,通常称为实例。l
4)消息 消息就是请求某个对象执行它所包含的某项处理操作的指令信息。实质是对某个类对象的操作函数的调用,即方法的调用。
PENGYANCPA19981年前1
伟大的潇琳儿 共回答了21个问题 | 采纳率81%
有很多种意思,比如人,也比如编程思想中的对象
面向对象有哪三大特征?分别带来什么好处?
你很xx1年前1
银川迅捷 共回答了15个问题 | 采纳率93.3%
面向对象是一种程序设计的思想,简单的讲,就是封装,继承,多态;当然,也可以说抽象.
封装这个概念简单的说,对于简单的数据类型,有它自己的封装类(通常我们说的打包);对于引用类型,类就是一个封装体的一个表现.
继承:子类继承父类(也就是派生类继承基类),它具有可扩展性,便于程序代码的重用性.
继承可以实现多态:通过重写(覆写),通过对象上传可以实现
多态:通过重写和重载实现
抽象:面向接口编程
面向对象的题目,关于用况图的某用况图中有两个用况 UC1 和 UC2 ,其中 UC2 是一个完整的用例,而 UC1并不能
面向对象的题目,关于用况图的
某用况图中有两个用况 UC1 和 UC2 ,其中 UC2 是一个完整的用例,而 UC1并不能脱离 UC2 而独立存在,且 UC2 中显示了调用 UC1的位置,则 UC1 和 UC2 间的关系是 () 。
A . 包含 B . 扩展 C .泛化 D . 调用
一个选择题而已。。求答案
长沙一一童话1年前1
76853080 共回答了16个问题 | 采纳率93.8%
选B。。
英语翻译基于Web分布式、跨平台、构件化的体系结构,结合Oracle的关系型数据库系统,采用java面向对象的编程语言的
英语翻译
基于Web分布式、跨平台、构件化的体系结构,结合Oracle的关系型数据库系统,采用java面向对象的编程语言的开发环境
木南豆豆1年前1
SMD121212 共回答了16个问题 | 采纳率100%
Distributed Web-based,cross-platform,component-based architecture,combined with Oracle's relational database system,using java object-oriented programming language development environment
(46) 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______.A.模拟现实世界中
(46) 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______.A.模拟现实世界中
(46) 面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______.
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
雪域野狼1年前1
sdfgrstgrtg 共回答了14个问题 | 采纳率78.6%
(46)[答案]C
[考点]软件工程基础
[评析]
我们举个例,
从各种语言的结构体类型出发,我们知道,结构体中可以定义很多变量,对每个变量执行相同的操作,挨个挨个写出,很麻烦.假设该结构体有如下变量:
草鱼、田鱼、鲫鱼……
它们都在一口池塘里,现在执行:它们都上来
传统的程序设计是:
草鱼上来
田鱼上来
鲫鱼上来
……
一条一条都写出,是不是很麻烦?
改进一下,我们用个循环:
n等于从1到10(假设共有10种鱼)
第n种鱼上来
还是很麻烦,现实中我们很易想到用"面向对象的思想",池塘里所有的鱼都是一个结构体变量,名为鱼,执行:
鱼上来
意思即所有的鱼都上来.
现特定于面象对象语言中的类,鱼,就可以看作为一类.
这就属于 C 项:
使用现实世界的概念抽象地思考问题从而自然地解决问题
这样罗嗦的解释望大家别晕,旨在帮助部分人的确难想通的,为应试,你能背下答案也行.
求UML高手帮做这几道题1.面向对象的开发方法具有以下优点,除了 ( )。A.“面向对象”使得系统各部分间彼此相对独立,
求UML高手帮做这几道题
1.面向对象的开发方法具有以下优点,除了 ( )。
A.“面向对象”使得系统各部分间彼此相对独立,从而提高了程序的可维护性。
B.“面向对象”的开发方法可以大大提高软件系统的可重用性、可维护性和可扩展性,所以更适合构建大型、复杂的软件系统。
C.使用面向对象的分析与设计方法,使开发软件变得更加轻松,同时降低了软件开发的风险。
D.从“面向对象”的角度分析问题是一种接近人类的自然思维方式,更容易被理解和接受。
2.要对一个企业的工作流程建模,可以使用( )
A 交互图
B 活动图
C 状态图
D 类图
3.计算机由CPU、内存、硬盘、显示器、鼠标等构成,那么计算机类和鼠标类之间的关系是( )
A 继承关系
B 关联关系
C 聚合关系
D 依赖关系
4.关于UML,下面说法正确的是( )
A UML是一种面向对象的建模方法。
B UML是一种形式化的语言,使用UML建立的模型可被计算机编译执行。
C UML是一种面向对象的编程语言。
D UML是一种面向对象的建模语言,但不是建模方法。
多选
以下哪些选项属于UML中的事物( )
A.用例 B.节点
C.依赖 D.状态机
E.类
以下说法中错误的是( )
A 组件图描述系统运行时的软件和硬件的物理结构,用于对系统的物理方面建模。
B 处理器和设备的区别在于是否具有计算能力。
C 部署图描述的是系统物理模型的布置。
D 一个系统可以有多个部署图。
用例图包含的元素有( ):
A.关系 B.消息
C.用例 D.参与者
E.系统边界
以下哪些选项是正确的多重性表示方法:( )
A.*..1 B.1..number
C.* D.0..1
协作图主要表现了系统对象间如何通过消息进行交互,主要强调了以下方面的信息( ):
A.参加交互的各对象的组织
B.对象在交互行为中承担的角色
C.参加交互的各对象的结构
D.消息发送的时间先后
可以利用“is..a”原则判断类之间是否有继承关系。 ( )
状态机是UML中的一种行为事物。 ( )
活动具有“原子性”、“瞬时性”和“不可中断”的特点。 ( )
时序图中的激活表示对象没有被占用。 ( )
用例图中参与者之间也可以象类一样存在泛化关系。
类是一组具有相同_________和_________的对象的抽象。
__________ 是将对象的属性和行为实现隐藏起来,对外只暴露公共的部分。
协作图中主要包含_________、_________、_________三个元素
__________ 描述了参与关联双方的数量关系。
___________是对一组动作序列的描述,系统执行这些动作序列来为参与者产生一个可观察的结果值。
简答
列举“面向对象”方法论中的三大基本特征,并说明它们在构建软件系统中的具体优点
回答要点
“面向对象”的三大基本特征是什么?
每种特征对软件开发具有什么样的实际意义
简述类图的建模步骤
xf79121年前1
猛牛乳液 共回答了18个问题 | 采纳率94.4%
CBCB;ACDE;BCD;ABC;T、T、T、F、T;属性、行为;封装;对象、信息、链接;关系种类;用例;【面向对象的三大基本特征及对软件开发的意义(具有的优点)】
封装、继承、多态
1、*可以避免将错误的数据引入系统
*隐藏对象某些复杂行为的具体实现过程,不仅方 便调用者的使用
,而且还增强了系统功能的独立性
2解决了代码冗余的问题,实现代码复用,提高了开发的效率,有利
于程序的维护。
3在具体类型之间直接建立关系将增加类与类之间的关联性,而这种
增强的类关系会降低系统的可维护性与可扩展性,所以用多态。
【类图的建模步骤】
1.分析问题领域
2.识别类
3.识别类间关系
4.绘制类图
好好看吧同仁们
c++程序:用面向对象的方法计算三角形类:三角形的三边及与三边相关的运算.
c++程序:用面向对象的方法计算三角形类:三角形的三边及与三边相关的运算.
要求:
(1)面向对象方法
(2)判断所输入的三边边长是否构成三角形,若是则计算三角形三边的周长和面积,否则重新输入三个边的边长.
(3)画出流程图.
j9xnck1年前0
共回答了个问题 | 采纳率
针对下面的简单的类图,从面向对象的角度,将Instrument定义成接口(另有一些要求,求帮忙做题,学渣拜谢)
针对下面的简单的类图,从面向对象的角度,将Instrument定义成接口(另有一些要求,求帮忙做题,学渣拜谢)

针对下面的简单的类图,从面向对象的角度,将Instrument定义成接口,应怎样实现。编写能完成如图功能的程序,并再编写一个简单的应用程序进行多态性测试。(要求用接口实现,还要进行多态性测试)

说明:Instrument表示乐器、Wind表示管乐器、Percussion敲击乐器、Stringed表示弦乐器、Woodwind表示木管乐器、Brass表示铜管乐器。

要求:(1)Instrument为接口,Wind为抽象类,其他为普通类。这里测试的目的是:我们知道当一个普通类实现一个接口时,必须实现该接口的全部方法,但当这个类是抽象类时,我们还需要实现该接口全部方法吗?如果不需要实现?那么是否直接不理这个方法就一,还是要将这个方法在自己类内部再标记一次为抽象方法。

(2)请编写测试代码,对实现Instrument接口的各个类进行多态测试,具体可参考课本例子。所谓多态测试就是向上自动塑型,以及向下动态绑定,而动态绑定的基本规则是实例方法“由下往上”寻找绑定,类方法和类属性成员“由上往下”寻找绑定。


hch_gy1年前1
草儿8 共回答了14个问题 | 采纳率85.7%
//参见java编程思想第四版接口章节
enum Note {
MIDDLE_C, C_SHARP, B_FLAT; // Etc.
}
interface Instrument {
public abstract void play(Note n);
public String what();
public abstract void adjust();
}

abstract class Wind implements Instrument {
public abstract void play(Note n);
public abstract String what();
public abstract void adjust();
}

class Percussion implements Instrument {
public void play(Note n) {
System.out.println("Percussion.play() " + n);
}
public String what() { return "Percussion"; }
public void adjust() {}
}

class Stringed implements Instrument {
public void play(Note n) {
System.out.println("Stringed.play() " + n);
}
public String what() { return "Stringed"; }
public void adjust() {}
}

class Brass extends Wind {
public void play(Note n) {
System.out.println("Brass.play() " + n);
}
public void adjust() { System.out.println("Brass.adjust()"); }
@Override
public String what() {
return null;
}
}

class Woodwind extends Wind {
public void play(Note n) {
System.out.println("Woodwind.play() " + n);
}
public String what() { return "Woodwind"; }
@Override
public void adjust() {
}
}

public class Music4 {
static void tune(Instrument i) {
i.play(Note.MIDDLE_C);
}
static void tuneAll(Instrument[] e) {
for(Instrument i : e)
tune(i);
}
public static void main(String[] args) {
Instrument[] orchestra = {
new Percussion(),
new Stringed(),
new Brass(),
new Woodwind()
};
tuneAll(orchestra);
}
}
UML提供了一系列的图支持面向对象的分析与设计,其中 (1) 给出系统的静态设计视图;(2) 对系统的行为进行组织和建模
UML提供了一系列的图支持面向对象的分析与设计,其中 (1) 给出系统的静态设计视图;(2) 对系统的行为进行组织和建模是非常重要的;__(3) 和_(4) 都是描述系统动态视图的交互图,其中 (5) 描述了以时间顺序组织的对象之间的交互活动, (6) 强调收发消息的对象的组织结构。
A、状态图 B、用例图 C、序列图 D、部署图 E、协作图 F、类图
我爱土壤1年前1
roy19700224 共回答了19个问题 | 采纳率94.7%
1.类图
2用例图
3序列图
4协作图
5序列图
6 协作图
JAVA项目:动物面向对象的描述
JAVA项目:动物面向对象的描述
创新
一定要有创新啊!
动物特性描述:
狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的,狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;
猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的,猫通常的时候和人打招呼会发出“喵~”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;
青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的,属于卵生.当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而再受到惊吓时,会“扑通一声跳入水中”;
要求对以上动物特性的描述做面向对象的分析,首先抽取其中的对象,然后分析对象的属性和方法,并分析各个对象之间的关系,最后用JAVA语言实现.
d5r31年前1
毛毛maomaomao 共回答了27个问题 | 采纳率77.8%
这个没有什么创新,只是有可能写法不一样而已.但基本思路都是这样写的测试类用到了多态import java.util.ArrayList;import java.util.List;public class Test {// 测试类public static void main(String[] args) thro...
数据库应用技术复习 求解1下面关于JAVA语言的说法,错误的是(  )。A.JAVA语言是一种面向对象的程序设计语言。B
数据库应用技术复习 求解
1下面关于JAVA语言的说法,错误的是(  )。
A.JAVA语言是一种面向对象的程序设计语言。
B.JAVA语言是一种跨平台的语言。
C.JAVA语言具有垃圾自动回收的机制。
D.JAVA语言是计算机可以直接识别的一种语言。
2、在java语言中,语句使用(  )号结束。
A. , B. . C.; D.:
6、转移字符 ‘n’的作用是:(  )。
A.换行 B.回车 C.退格键 D. 制表符
C. 取得字符串的长度 D. String类中没有这个方法
8、表达式 ((1>2)||(3>2))&&(4>3)的执行结果是:(  )。
A. true B.false C.无法确定 D.4
9、下列哪个关键字用于实现接口(  )。
A.implements B.implement C. import D. imports
1、下列修饰符中与访问控制无关的是 (  )。
A.private    B.public
C.protected D.final。
2、以下有关类的继承的说明中,正确的是:(  )。
A.子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性
B.子类只能继承父类的方法,不能继承父类的属性
C.子类只能继承父类的非私有属性,不能继承父类的方法
D.子类不能继承父类的私有属性。
3、方法头中static修饰符的含义:(  )。
A.方法体为空 B.定义的方法没有形参
C.该方法属于类的方法 D.方法的返回值不能参加算术运算
4、下面的变量名不正确的是(  )。
A. studentName B. _ studentName C. $studentName D. 2studentName
5、能从循环语句的循环体中跳出的语句是(  )。
A. for 语句 B. break 语句 C. while 语句 D. continue语句
yunsida1年前1
jieli 共回答了17个问题 | 采纳率88.2%
DCAAADDCCB