一面向对象程序设计思想

1 和面向过程关注点不同

过程: 程序执行流程和逻辑 (局部功能)

对象: 程序中的对象 (程序结构)

2 对象

现实世界中的实体和事物 可以看成是一种具有自身属性和功能的构件,

程序是由不同的对象组成,实现程序的功能是调用对象的功能

(在Java中,指由类创建的对象)

类(对同类事物的抽象描述)

3 如何学习面向对象程序设计思想

Everything is Object !

想到某一功能,应该想到哪一对象具备该功能

提到数据,首先想到该数据属于哪一个对象

4 面向对象设计步骤

提炼对象

分析程序中的对象有哪些(名词法)、抽象

对同一类事物抽象描述

属性:事物的特征和外观

行为:对象的功能

描述对象

创建对象

调用对象

5 面向对象的三大特性

封装:对外隐藏,对内公开(隐藏内部实现细节)高内聚,低耦合(为了保护程序的正常使用和运行)

继承:实现代码的复用

多态:同一操作,不同对象不同实现(行为)

二 界面和业务逻辑的分离

分层思想:将整个应用程序分解为若干个层次(表示层、业务层、数据访问层)。软件的需求是会改变的,

要以最少的改变以适应软件需求的改变。在系统中,有很多部分是稳定不变的。有些部分是以与改变的。

用户注册:用户输入用户名、判断用户名是否存在、判断用户名是否合法(符合制定的规则,如长度不能少于八位,

只能包含字母、数字,不能包含其他特殊字符),用户输入密码(密码符合制定的规则),两次输入密码,并且要判断两次密码是否相同。最后,

用户名不存在且符合规则,密码符合规则,且两次输入相同,然后进行注册,所谓注册就是将用户名和密码写入到数据库中。

找出系统中稳定不变的部分和易变的部分,

最根本的目的:采用分层思想,将应用程序分为多个层次,提高软件的可维护性。

三 ATM取款机、扑克牌游戏

1 ATM取款机

界面 : 显示欢迎信息、显示菜单、身份验证(只负责数据的输入和验证结果的提示,以及输入数据的合法性判断)、查询(只负责显示,

卡内余额是由业务层提供的)、取款(只负责数据的输入与显示,具体修改卡内余额、机内余额等都是业务逻辑范围)

业务:查询(只返回余额,并不决定怎么显示数据)

2 扑克牌游戏

生成扑克牌、洗牌、抽牌、比较牌的大小、输出结果

业务逻辑:生成扑克牌、洗牌、抽牌、比较牌的大小

界面:计算抽牌的界面、用户抽牌的界面、输出结果的显示

Faceto_object_programdesign的更多相关文章

随机推荐

  1. espcms代码审计第一弹

    以前的代码审计都是在CTF比赛题里面进行对于某一段代码的审计,对于后端php整体代码和后端整体架构了解的却很少,所以有空我都会学习php的代码审计,以提高自己 环境就直接用的是phpstudy,学习的 ...

  2. bugkuctf web区 多次

    首先看到以下url : 发现这是一个基于布尔类型的盲注. true: false: 根据这两种类型可以进行注入.废话不多说,直接进行尝试. 构造 url = index.php?id=1' or 1= ...

  3. v-lazyload数据变化图片不切换

    这个问题让我很困惑,明明得到的商品数据已经改变了,但是就图片不变化,随后找到了解决办法,那就是多加一个动态的key <img v-lazy="item.productImage&quo ...

  4. .NET 内存泄漏的争议

    前几天发布了几篇关于要小心使用 Task.Run 的文章,看了博客园的所有评论.发现有不少人在纠结示例中的现象是不是属于内存泄漏,本文分享一下我个人的看法,大家可以保留自己的意见. 在阅读本文前,如果 ...

  5. 题解 CF1446D2 【Frequency Problem (Hard Version)】

    给出一个跑得快一点的做法,洛谷最优解 (时间是第二名的 \(\frac{1}{2}\)), CF 第一页 D1 首先找到整个序列的众数 \(G\), 很容易证明答案序列中的两个众数中其中一个是 \(G ...

  6. 题解-Roman and Numbers

    题解-Roman and Numbers 前置知识: 数位 \(\texttt{dp}\) </> \(\color{#9933cc}{\texttt{Roman and Numbers} ...

  7. 题解-[WC2011]最大XOR和路径

    [WC2011]最大XOR和路径 给一个 \(n\) 个点 \(m\) 条边(权值为 \(d_i\))的无向有权图,可能有重边和子环.可以多次经过一条边,求 \(1\to n\) 的路径的最大边权异或 ...

  8. Pandownload网页版复活

    不注册则每人每天5次机会,注册或邀请别人注册都可以获得30次额外的下载机会. 1.将百度云链接复制粘贴到解析,点击打开,等待解析. 2.获取链接成功后会跳转到下载界面,里面有详细的使用教程,自行查看 ...

  9. oracle修改数据文件目录

    一.停库修改数据文件目录.文件名 1.当前数据文件目录 SQL> select file_name from dba_data_files; FILE_NAME ---------------- ...

  10. MongoDB加索引DB崩溃的问题

    项目原因,最近在对MongoDB进行数据存储优化   原有问题: 日志数据量比较大,存到一张表,需要手工定时删除数据,且删除数据时间按天算 数据会定时打包到HDFS,查询时间很慢,需要优化 机器内存占 ...