11:c# oop思想面向对象编程(by-朝夕)

article/2025/10/2 23:34:56

目录

  • 前言
  • oop思想
    • 面向过程
    • 面向对象
  • 面向对象特点:
  • 设计模式/原则
  • 设计模式六大原则:
    • 单一职责原则(Single Responsibility Principle)
    • 里氏替换原则(Liskov Substitution Principle)
    • 依赖倒置原则(Dependence Inversion Principle)
    • 接口隔离原则(Interface Segregation Principle)
    • 迪米特法则 (Law Of Demeter)
    • 开闭原则 (Open Closed Principle)

前言

类与接口的区别;
类是为了说明是什么。
接口是为了限定做什么。

pop:procedure oriented programming 面向过程编程
oop:object oriented programming 面向对象编程

oop思想

面向过程

过程

面向对象

在这里插入图片描述

面向对象特点:

继承、封装,多态;

  1. 封装:
    就是对象的确定,隔离了内部的业务逻辑,外面根本不用去操心怎么实现,只要是让外部调用的方法名称不变,外面就不受影响;那么内部就可以自由扩展,修改;
    数据安全,可以通过不同的访问修饰符,来限定外部是否可以调用;外面只能通过我定义的对完公开接口进行访问(不能随便修改)
    降低耦合: 提高重用性;隐藏不想让别人看到的东西;

  2. 继承:子类可以拥有父类的一切行为和属性,继承以后代码也可以重用;
    单基类继承;就是是只能有一个父类;
    重写,覆写,重载
    重载:方法签名一样,但是参数列表不同;跟返回值没关系;

  3. 多态:可以有不同的状态;一个类可以有多个类型来表示,当然还有方法; 运行时多态:虚方法 能不能类不让其他类来继承;
    继承后多态;通过一个声明,来调用行为,执行的真正动作其实不一样; 接口多态:同一个接口声明,调用同一个方法,执行的却是不同的和业务逻辑

    Tips: 抽象类不可被实例;接口可以继承接口;
    

设计模式/原则

  • 设计模式:面向对象语言开发过程中,遇到种种的场景和问题,提出的解决方案和思路,沉淀下来
  • 设计模式六大原则:面向对象语言开发过程中,推荐的一些指导性原则
    没有明确的招数,而且也经常会被忽视/违背
    也是前辈总结,也是为了站在前辈的肩膀上
  • 原则:建议,不是一定要使用;

设计模式六大原则:

单一职责原则(Single Responsibility Principle)

  • 类单一职责:一个类只负责一件事儿;

  • 类层面的单一职责:父类+子类;每个类只负责自己的事儿—增加扩展性;

  • 方法层面的单一职责:每个方法只负责自己的事儿;把个件事儿拆分成不同的小方法来各自实现;每个方法就可以独立演变,增加了程序的稳定性;

  • 类库层面的单一职责:每个类库要求职责清晰;三层架构 UI+BLL+DAL+Common

  • 项目层面的单一职责:要求每个项目职责清晰:单体架构 MVC,所有的业务逻辑都写在一起;

  • 原始版电商平台:会员的系统+商品系统+订单系统 如果是全部放在一起,代码耦合很高;修改一处,其他的都受到影响;

  • 升级版电商平台:会员系统独立出来。。。。订单系统独立。。。。商品。。。。

  • 可以让每个子系统可以独立演化;增强了程序的稳定性。。。

  • 单一职责:大家视情况而定;并不是一定要遵循—我建议大家遵循;

  • 拆分:父类+子类一个类只负责了一件事儿;每个类更加简单了;简单预示着强大;

  • 代码量增加了;代码的可读性降低了;

  • 为什么要遵循单一职责呢?增加扩展性

  • 建议:如果代码很简单,没有必要去遵循单一职责
    如果代码比较复杂,建议大家还是可以去遵循单一职责;

里氏替换原则(Liskov Substitution Principle)

  • 里氏替换原则:任何使用基类的地方,都可以透明的使用其子类

  • 继承+透明==正确的是使用继承;
    1.任何父类出现的地方都可以用子类代替;
    2.子类继承父类,必须拥有父类的一切行为和属性;如果子类出现不应该有的方法;
    3.子类可以有自己的独立行为和属性,子类出现的地方,不一定可以让父类代替
    4.父类出现的动作,子类就不要再写(不要使用new隐藏)—老师也强烈建议大家不要使用这个new
    5.要求尽量使用父类类声明实例对象;

  • 说白了:老师觉得就是叫我们如何去正确的使用继承;为了解决之前的技术债

  • 如果子类出现不应该有的方法,就应该断开继承,再来一个父类;
    透明:
    继承、多态

依赖倒置原则(Dependence Inversion Principle)

  • 依赖倒置原则:上层模块不应该依赖于低层模块,二者应该通过抽象依赖
  • 项目是分层架构的:A->B->C->D->E->F
  • 如果是依赖于细节,那么如果F层发生需求编程,代码调整了,会导致E层也会不稳定,E层也要----。。。。。上层会成冒泡式修改。。。
  • 如果依赖倒置以后:不再依赖于细节,而是依赖于抽象,抽象相对稳定,只要抽象不修改,高层就不受影响;如果F代码修改了,E依赖的是F的抽象,E不受影响,上层都不受影响;整个系统架构才是稳定的;
  • 在这里插入图片描述

接口隔离原则(Interface Segregation Principle)

  • 接口隔离原则:客户端不应该依赖它不需要的接口;
    一个类对另一个类的依赖应该建立在最小的接口上;
  • 正确的使用接口

迪米特法则 (Law Of Demeter)

  • 迪米特法则(最少知道原则):一个对象应该对其他对象保持最少的了解。
    只与直接的朋友通信。 —最少知道别人的事儿,也尽量让别人最少知道自己的事儿;不好好奇心太重;

  • 面向对象开发:万物皆对象;一个功能的实现===多个对象交互产生;
    类和类之间的关系:
    纵向:继承、实现
    横向:聚合>组合>关联>依赖(体现在方法内部)

  • 高内聚—低耦合;
    为什么要遵循迪米特法则:就是为了能减低耦合;让代码更加稳定; 代码稳定,代码的健壮性,代码的安全—你们做了大型项目后悔有明显的感觉;

  • 成本:增加了复杂性,可读性也降低了;

  • 迪米特法则的应用:三层架构—UI+BLL+DAL
    门面模式:转移依赖耦合

  • 要求私密性:正确的使用访问修饰;
    public private protected interal

开闭原则 (Open Closed Principle)

  • 开闭原则:对扩展开发,对修改关闭。

  • 修改:修改现有代码(类)
    扩展:增加代码(类)

  • 开闭原则建议:无论是功能的增加还是功能的修改,都通过增加代码(类);
    建议大家代码只增不改;—原有代码不修改,系统必然稳定;

  • 开闭原则其实是前面五大原则的总则;

  • 增加方法—增加类—增加类库(可以生成dll文件 + 抽象约束+配置文件)


http://chatgpt.dhexx.cn/article/opPjgZAm.shtml

相关文章

php oop思想

1.特点: - 封装:隐藏对象的属性和实现细节 - 继承:从一个基类得到一个或多个类的机制 - 多态:根据使用类的上下文来重新定义或改变类的性质或行为 2.访问控制符 public 全局,类内部、外部、子类都可访问protected 受…

php中的oop思想,oop_php oop思想_oop和ood

我想从一个游戏程序员的角度探讨OOP的一个问题──性能。 现时C可以说是支持OOP范式中最为常用及高性能的语言。 历史上,OOP大概是60年代出现,而C诞生于70年代末。现在的硬件和当时的有很大差异,其中最大的问题是内存墙_百度百科。 图1: 处理…

java里oop思想_(一)OOP思想详解

1.关于抽象的进步。面向对象OOP的设计思路其实是把“抽象”这种编程方法进行了新的解释说明,把具体的人或事务抽象成了“类”“对象”的形式。 面向对象的主要思想: 万物即对象 程序是对象的组合 每个对象都有自己的空间,可以容纳其他对象 每…

Java面向对象OOP思想概述

Java设计思想 OOP思想(Object Oriented Programming)类和对象接口抽象类OOP三大特性封装继承多态 OOP复用的形式 OOP思想(Object Oriented Programming) 类和对象 在面向对象中,类和对象是最基本、最重要的组成单元 类:类可以说是一个模板,…

java里oop思想_Java OOP 思想解析

因为有着一年半的iOS开发经验(OC也是一门面向对象的语言)所以在对Java的面向对象的理解上也是有着自己的理解,今天就和大家分享一下。 面向对象中最为重要的三大思想就是:继承、封装、多态。本文将以一个实例场景来分析Java中的OOP。现有一个场景&#x…

OOP思想

OOP思想 OOP思想在框架实战中的具体体现: OOP程序员遇到问题时的思考方式: –》 利用现有的方法和对象来搞定 --》 去找方法或对象来搞定 去哪找呢? –》 从父类或者父接口找 idea在OOP开发上还是提供了很多很好用的工具,可…

OOP基本思想

面向对象思想 面向对象概念:是指把所有对象封装为对象,提高代码的复用性 【复用性就是指一段代码可以重复使用】 一:面向对象四大步骤: 1:给计算机定义一个类 【一个类又两部分组合:成员变量和成员方法】 2…

Kali Linux信息收集工具栏之Dmitry tools(工具)

首先这款工具是信息收集工具里的第一位,大体作用是对IP或者web域名进行whois查询,它的用参数如下图: 首先我们需要知道整个格式是这样的 dmitry [-winsepfb] [-t 0-9] [-o%host.txt] IP或者web域名 #环境变量 (空格接参数) -t在…

白帽子黑客与网络安全工程师教你:如何使用DMitry域名查询工具技巧?

课前声明: 1、本分享仅做学习交流,请自觉遵守法律法规! 2、搜索:Kali 与编程,学习更多网络攻防干货! 3、Kali 与编程每天准时更新,敬请学习和关注! 正文部分 一、背景介绍 DMitry 工…

Kali linux-信息收集-dmitry

信息收集-dmitry DMitry(Deepmagic Information Gathering Tools 深度信息收集工具)是一个kali linux下用C语言写的工具。主要功能为端口扫描,whois主机IP和域名信息,从Netcraft.com获取主机信息,子域名搜集。 帮助: -o 保…

荆棘合成器-Plugin Alliance Dmitry Sches Thorn 1.2.2 WiN-MAC

win:VSTi, VSTi3, AAX* (*MOD.) 288M | mac:VST, VST3, AU 113M Thorn是一款软件合成器,旨在易于使用并提供出色的声音。在Thorn中,简单意味着简单明了,并同时提供高级声音控制。直观的工作流程&#xff0c…

综合扫描工具 -- dmitry

今天的云很好看,我想拍给你看,却想到我们很久不联系了,突然觉得,云也没那么好看了。。。 ---- 网易云热评 Dmitry是一款一体化的信息收集工具 一、环境:kali201201 二、用法: -o Save output to %host.txt or to …

Kali 工具系列【4】深度信息挖掘工具Dmitry使用技巧

一、Dmitry是什么? DMitry是黑客渗透流程中进行深度信息收集的利器,它是一个由C语言编写的UNIX/(GNU)Linux命令行工具,无GUI操作界面,需掌握其常用使用参数。 二、Dmitry可以用来做什么? 1、进行TCP端口扫描,收集端口…

DNS收集分析DMitry

Dmitry是一个由C语言编写的UNIX/(GNU)Linux命令行工具,它可用于收集主机相关信息,比如子域名、Email地址、系统运行时间信息。 列出帮助信息: $ dmitry –help 查看更完整的文档: $ man Dmitry 选项详解: -o filename 创建as…

渗透前戏:dmitry简介

Dmitry是一款有深度的信息挖掘机,用自己的小破网站来做个实验,实际体验真的很鸡肋,我要对这个深度信息挖掘机做一个深深的鄙视。 查询IP地址信息: dmitry -i 104.244.88.156 原来我的网站的HostName是16clouds.com的二级域名。 查…

域名查询工具DMitry

DMitry工具是用来查询IP或域名WHOIS信息的。WHIOS是用来查询域名是否已经被注册及已经注册域名的详情大的数据库(如域名所有人和域名注册商)。使用该工具可以查询到域名的注册商和过期时间等。 简单使用 dmitry [-winsepfb] [-t 0-9] [-o %host.txt] h…

【kali-信息收集】(1.3)探测网络范围:DMitry(域名查询工具)、Scapy(跟踪路由工具)

目录 一、简介 1.1、概述: 二、工具 2.1、域名查询工具DMitry 简介: 命令: 使用: 分析: 命令: 2.2、跟踪路由工具Scapy 简介: 命令: 基础: ARP().display()…

最新kali之dmitry

描述: Deepmagic信息收集工具。   DMitry(Deepmagic信息收集工具)是UNIX /(GNU)Linux命令行应用程序,能够收集有关主机的尽可能多的信息。   DMitry的基本功能允许从目标上的简单whois查找到正常运行时…

KaliLinux-dmitry使用详解

文章目录 DMitry简介常用参数使用实例 DMitry简介 Dmityr算是一款比较老的工具,是一个简单的主机信息扫描程序,工作原理是通过whois和netcraft查询主机信息,并且可以进行一些简单的端口扫描域名检测等操作。(缺点:需要链接google…

Kali信息收集工具Dmitry

Dmitry信息收集工具 功能:它可以收集以下信息 根据IP或者域名来查询主机上的whois信息在netcraft.com(提供安全服务)的网站上挖掘主机信息查找目标域中的子域查找目标域中的邮件地址探测目标主机打开的端口、被屏蔽的的端口和关闭的端口 D…