一、面向对象

第一节:面向对象编程
1.面向对象三大原则:
封装:就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
继承:继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。子承父业,子类直接使用父类的属性和方法。
多态:是指一个类实例的相同方法在不同情形有不同表现形式,允许不同类的对象对同一消息做出响应。
2.面向对象五大原则:五大基本原则:SPR, OCP, LSP, DIP, ISP
a. 单一功能原则(SPR): 每个类型(包括接口和抽象)功能要求单一,只负责一件事情。
b. 开闭原则(OCP):一个软件实体应该对扩展开发,对修改关闭。可扩展但是不可更改。核心:用抽象构建框架,用实现类实现扩展。
c. 里氏代换原则(LSP):子类能够替换父类,出现在父类能够出现的任何地方,当使用继承时,尽量遵循历史替换原则,尽量不要去重写或者重载父类的方法,以免破坏整个继承体系 的 。因为父类在定义或者实现某些方法时,规定了必须遵守的规则和契约。
d. 依赖倒置原则(DIP):具体依赖抽象,上层依赖下层。核心思想是面向接口编程。两个模块之间依赖的应该是抽象(接口或抽象类)而不是细节。细节(实现类)依赖于抽象 ,依赖原则基于的事实:相对于实现类的多变性,抽象的东西要稳定得多,基于抽象的构架也比基于实现的架构更加稳定,且扩展性更高。
e. 接口分离原则(ISP):模块间要通过具体接口分离开,而不是通过类强耦合。例如A类对B类的依赖,可以抽象接口I,B实现I,A类依赖I来实现。但是抽象接口必须功能最小化(与单一功能原则有点不谋而合)。
迪米特原则:最小依赖原则,一个类对其他类尽可能少的了解,只与朋友通信。降低耦合 
高内聚低耦合:软件工程中对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。
总结:
依赖原则告诉我们要面向接口编程;
接口分离原则告诉我们设计接口的时候功能要单一;
里式替换告诉我们不要破坏继承体系,而是去扩展;
单一功能原则告诉实现类要功能单一。
开放封闭原则则是总纲,对扩展开放,对修改封闭。
附加;新系统采用SpringCloud   console? 服务注册中心 微服务:微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。

转载于:https://www.cnblogs.com/ximei/p/9597880.html

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

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

相关文章

[poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]

题意 有n个数的序列, 下标为[1.. N ], 限制条件为: 下标从 si 到 sini 的项求和 < 或 > ki. 一共有m个限制条件. 问是否存在满足条件的序列. 思路 转化为差分约束, 就是 即 Si 为第 i 项的前缀和, 特别的 So 为0. 转化不等式(连续子段和变为前缀和之差 > < 变为 &g…

linux质控命令,Linux下microRNA质控-cutadapt安装

如果Linux系统已安装pip或conda&#xff0c;cutadapt的安装相对简便一些&#xff0c;示例如下&#xff1a;1.pip安装pip install --user --upgrade cutadapt添加环境变量echo export PATH$PATH:/your path/cutadapt-1.10/bin >> ~/.bashrc2.conda安装conda install -c b…

采用多播传送FIX行情数据的推荐方案

理由FIX协议由一个会话层协议&#xff0c;一个应用层协议和一套域数据字典组成。后两者不依赖于FIX会话。而且&#xff0c;由于FIX会话作为Point-to-point&#xff08;点-对-点&#xff09;通信&#xff0c;并不适合于发布/订阅模式&#xff08;如为大量接收者提供市场数据&…

AJAX 异步加载技术

AJAX 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换&#xff0c;AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下&#xff0c;对网页的某部分进行更新。 传统的网页&#xff08;不使用 AJAX…

linux分辨率和用户有关吗,Linux系统在高分屏非正常分辨率显示

问题描述&#xff1a;win10重装为Ubuntu16.04&#xff0c;在1920x1080的显示屏上&#xff0c;linux系统分辨率只有800x600xrandr # 查看当前显示分辨率#输出&#xff1a;[Screen 0: minimum 800 x 600, current 800 x 600, maximum 800 x 600]可以看出显示屏最小为800x600&…

数据透视表和数据交叉表_数据透视表的数据提取

数据透视表和数据交叉表Consider the data of healthcare drugs as provided in the excel sheet. The concept of pivot tables in python allows you to extract the significance from a large detailed dataset. A pivot table helps in tracking only the required inform…

金融信息交换协议(FIX)v5.0

1. 什么是FIXFinancial Information eXchange(FIX)金融信息交换协议的制定是由多个致力于提升其相互间交易流程效率的金融机构和经纪商于1992年共同发起。这些企业把他们及他们的行业视为一个整体&#xff0c;认为能够从对交易指示&#xff0c;交易指令及交易执行的高效电子数…

观光公交

【问题描述】 风景迷人的小城 Y 市&#xff0c;拥有 n 个美丽的景点。由于慕名而来的游客越来越多&#xff0c;Y 市特意安排了一辆观光公交车&#xff0c;为游客提供更便捷的交通服务。观光公交车在第 0 分钟出现在 1 号景点&#xff0c;随后依次前往 2、3、4……n 号景点。从…

linux行命令测网速,Linux命令行测试网速的方法

最近给服务器调整了互联网带宽的限速策略&#xff0c;调到100M让自己网站也爽一下。一般在windows上我喜欢用speedtest.net来测试&#xff0c;测速结果也被大家认可。在linux上speedtest.net提供了一个命令行工具speedtest-cli&#xff0c;用起来很方便&#xff0c;这里分享一下…

Delphi XE2获取汉字拼音首字母

function CnPYIndex(const CnString: string): string;{ 返回中文的拼音首字母}const ChinaCode: array[0..25, 0..1] of Integer ((1601, 1636), (1637, 1832), (1833, 2077), (2078, 2273), (2274, 2301), (2302, 2432), (2433, 2593), (2594, 2786), (9999, 0000), …

图像处理傅里叶变换图像变化_傅里叶变换和图像床单视图。

图像处理傅里叶变换图像变化What do Fourier Transforms do? What do the Fourier modes represent? Why are Fourier Transforms notoriously popular for data compression? These are the questions this article aims to address using an interesting analogy to repre…

HDUOJ 1062 TEXT REVERSE

#include<iostream> #include<stdlib.h> #include <iomanip> #include<stack> using namespace std;int main(){//次数int n 0;while (cin >> n) {//这里需要读一个字符&#xff0c;需要消除换行符的影响getchar();while (n--) {char c;stack&l…

VC++的windows服务

项目建立&#xff1a; VS2008->ATL项目->服务exe 服务部署&#xff1a; 在VS2008中新建的ATL项目&#xff0c;在网上看到的流程中都会有注册服务这一项。 但是对服务的注册都是只给了一个指令&#xff0c;一句话带过&#xff0c;没有给出具体的操作步骤 经过多次试验…

linux中gradle编译慢,【Linux】解决linux下android studio用gradle构建从jcenter或maven下载依赖太慢...

一个简单的办法&#xff0c;修改项目根目录下的build.gradle&#xff0c;将jcenter()或者mavenCentral()替换掉即可&#xff1a;allprojects {repositories {maven{ url http://maven.oschina.net/content/groups/public/}}}但如果你有很多个项目的话&#xff0c;一个一个的改估…

MFC程序需要的函数库及头文件--《深入浅出MFC》

Windows程序调用的函数可分为2部分&#xff1a;C Runtimes Windows API。 C Runtimes&#xff1a; LIBC.LIB -- C Runtime函数库的静态链接版本 MSVSRT.LIB--C Runtime库的动态链接版本&#xff08;如果要链接这一函数&#xff0c;你的程序执行时必须有MSVCRT40.DLL在场&#…

C#DNS域名解析工具(DnsLookup)

C#DNS域名解析工具(DnsLookup) DNS域名解析工具&#xff1a;DnsLookup 输入域名后点击Resolve按钮即可。 主要实现代码如下&#xff1a; private void btnResolve_Click ( object sender, EventArgs e ) {lstIPs.Items.Clear ( ); //首先把结果里的ListBox清空 try {IPHostE…

python.day05

一 字典 定义:dict, 以{},表示.每一项用逗号隔开,内部元素用key:value的形式来保存数据.例如 {"jj":"林俊杰","jay:周杰伦"} 特点:查询效率非常高,通过key来查找元素 内部使用key来计算一个内存地址(暂时),hash算法,key必须不可变的数据类型(ke…

滞后分析rstudio_使用RStudio进行A / B测试分析

滞后分析rstudioThe purpose of this article is to provide some guide on how to conduct analysis of a sample scenario A/B test results using R, evaluate the results and draw conclusions based on the analysis.本文的目的是提供一些指南&#xff0c;说明如何使用R对…

Linux程序实现弹框,jQuery实现弹出框 效果绝对美观

使用到JQeury写的几个比较好的Popup DialogBox,觉得不错。和大家分享下。使用它们结合.net可以实现很好的效果。1.jqpopup:是个可以拖拽,缩放并可以在它上面显示html页面上任何一个控件组合的控件。可以和后面的主页面通信。使用方法:先调用这几个js文件,可以自提供的下载地址下…

Interesting visualization tools for profiling.

Interesting visualization tools for profiling. http://dtrace.org/blogs/brendan/2012/03/17/linux-kernel-performance-flame-graphs/ http://dtrace.org/blogs/brendan/2013/07/01/detecting-outliers/