项目实战典型案例18——开门小例子理解面向对象
创始人
2025-05-29 11:56:02

开门小例子理解面向对象

  • 一:背景介绍
    • 业务背景
  • 二:思路&方案
    • 1.面向过程的实现思路
    • 2.面向对象的实现思路一(封装、继承、多态)
    • 3.面向对象的实现思路二(封装、继承、多态、反射)
  • 三:实现过程
    • 面向过程
    • 2.面向对象(封装)
      • 建模:
      • 代码编写
    • 实现效果
    • 3.面向对象(封装、反射)
    • 实现效果
  • 四:总结

一:背景介绍

业务背景

公司老板(米老师)来公司,需要进入办公室的门,这个时候需要一个开门的人。

在这里插入图片描述

二:思路&方案

1.面向过程的实现思路

何老师是管理钥匙的人,何老师将钥匙放在了前台。米老师到公司之后需要开门,去前台拿去钥匙并自己去开门

2.面向对象的实现思路一(封装、继承、多态)

有专门管理钥匙的人员,当公司老板(米老师)到公司之后通知一声何老师打开水麒麟的门,何老师听到这个消息之后就过来开门了。

3.面向对象的实现思路二(封装、继承、多态、反射)

有多个老师具备管理钥匙并开门的职责,当米老师到公司之后,通知任意一个老师打开水麒麟的门,被通知的那个老师听到消息之后就过来开门。

三:实现过程

面向过程

将开门整个事都进行了封装,需要开门的人、和开门的人、管理钥匙的人都是明确的。原本何老师的工作(开门)交给了公司老板(米老师)来做

public class Client {public static void main(String[] args) {System.out.println("米老师:我需要开门");System.out.println("何老师:米老师,钥匙放在前台了,您开一下吧");System.out.println("米老师:去前台拿钥匙自己去开门了");}
}

2.面向对象(封装)

公司老板(米老师)来公司,需要进入办公室的门,这个时候需要一个开门的人。从这个业务中抽象出四个类来:发消息的人、接收消息的人、业务封装类、客户端类。

建模:

应该为米老师依赖于何老师,米老师需要何老师去开门。
在这里插入图片描述

代码编写

接收消息人类
接收消息人类有一个私有的开门方法

public class ReceiveMessager {private void openDoor(){System.out.println("我是何老师:我来开门了");}public void receiveMessage( ){this.openDoor();}}

发送消息人类
发送消息人类依赖接收消息人类,

public class SendMessager {public void sendMessage(ReceiveMessager receiveMessager){System.out.println("我是米老师:我需要开门");receiveMessager.receiveMessage();}}

业务封装类
封装了一个私有的business()方法,向具体的业务进行封装不进行暴露,暴露给外部一个notice方法。

public class Notice {private void business(){ReceiveMessager receiveMessager=new ReceiveMessager();SendMessager sendMessager =new SendMessager();sendMessager.sendMessage(receiveMessager);}public void notice(){this.business();}

客户端

public class Client {public static void main(String[] args) {Notice notice = new Notice();notice.notice();}

实现效果

在这里插入图片描述

3.面向对象(封装、反射)

在2的基础上添加了反射,这样做的意义是增加灵活性,可以由米老师,通知任何一名具有开门职责的教师去开门。并且是在程序运行期间根据指定的老师,动态实例化。
业务封装类

public class Notice {private void business(String className,String methodName) throws Exception{SendMessager sendMessager = new SendMessager();sendMessager.sendMessage(className, methodName);}private void getParam() throws  Exception{//通过new Scanner(System.in)创建一个Scanner类型的名叫scanner的对象,//控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给scannerScanner scanner = new Scanner(System.in);System.out.println("请输入类名");//nextLine()方法的作用时获取当前行的输入内容,//返回得到的是回车键之前的所有字符,包括空格String className = scanner.nextLine();System.out.println("请输入方法名");String methodName = scanner.nextLine();this.business(className, methodName);}public void notice() throws Exception{this.getParam();}}

发送消息人类
这里主要通过反射进行实现,这样发送消息的人可以通知任意具有开门职责的老师来开门。

public class SendMessager {public void sendMessage(String className,String methodName) throws Exception{System.out.println("米老师发消息======");//通过反射获取对象和方法Class classObj = Class.forName(className);Object teacherHe = classObj.newInstance();Method methodObj = classObj.getMethod(methodName);methodObj.invoke(teacherHe,null);}}

接收消息类

public class ReceiveMessager {private void openDoor(){System.out.println("接收消息的人:好的,已开门");}public void receiveMessage(){this.openDoor();}
}

客户端

public class Client {public static void main(String[] args) throws Exception {Notice notice = new Notice();notice.notice();}
}

实现效果

在这里插入图片描述

四:总结

在这里插入图片描述

面向对象的三大特性是:封装、继承、多态。
面向对象的原则:有七大原则。
面向对象的基础是抽象。
反射的实现方式有三种
1.类对象.class
2.Class.forName(“包路径”)
3.对象.getClass()

面向对象没有好坏之分,只是各自的应用场景不同,根据不同的场景选择合适的开发思想。
面向过程更偏向于小型工程,并且开发速度相对较快,设计相对简单。而面向过程,前期投入的时间相对较多,并且性对难以理解和入门。

相关内容

热门资讯

在小众行业掘金,她首次参加大促... 2025年天猫“6·18”期间,“叙春”累计访客量达到70万人次,总销售额突破300万元,超越了品牌...
基金经理上半年收益排名揭晓!重... 基金经理是投资者在挑选基金时的重要参考因素,尤其是对于主动管理型基金,基金经理的个人能力对于基金产品...
甬金股份:公司实际控制人曹佩凤... 7月8日,甬金科技集团股份有限公司(甬金股份,603995.SH)公告,公司于7月7日晚自实际控制人...
半年报业绩预喜公司,集中在这些... 半年报剧透:电子、化工、机械行业这些公司业绩猛增。 目前已有多家A股上市公司发布2025年半年报预告...
年服务200+企业!数商云凭什... 在数字经济与实体经济深度融合的浪潮中,珠海作为粤港澳大湾区的重要节点城市,正加速推进产业数字化转型。...
收评:创业板指收涨2.39% ... 中国经济网北京7月8日讯 A股三大指数今日全天震荡走高。截至收盘,上证指数报3497.48点,涨幅0...
苹果AI遭打击:扎克伯格挖角基... 马克·扎克伯格 视觉中国 资料图 社交媒体巨头Meta持续挖角,给正为AI(人工智能)所困扰的苹果沉...
原创 欧... ——·前言·—— 欧洲的处境可谓陷入被动境地,俄乌冲突似乎没有止息的迹象,而美国又准备对中国施加...
歌尔股份在合肥成立歌尔泰克科技... 天眼查App显示,近日,合肥歌尔泰克科技有限公司成立,法定代表人为张金国,注册资本500万人民币,经...
收评:沪指涨0.7%逼近350... 【收评:沪指涨0.7%逼近3500点 全市场超4200只个股上涨】财联社7月8日电,市场全天震荡走高...
为完成销售任务,一支行负责人先... 红星资本局7月8日消息,近日,裁判文书网披露的一份终审民事判决书显示,某银行支行一名负责人为了完成基...
惊天警告!各国央行都开始担心美... 史无前例的担忧!瑞银重磅报告揭示:全球储备管理者正为美国债务违约做准备……瑞银集团委托进行的一项对央...
我国对欧盟白兰地开征反倾销税,... 历时一年半反倾销调查,商务部近日公布最终裁定,认定原产于欧盟的进口相关白兰地存在倾销,国内相关白兰地...
突然,直线暴拉!大涨650%,... 稳定币概念股的热度有点高!今日(7月8日),港股市场又出现一只“妖股”,金涌投资午后暴力拉升,涨幅一...
高考结束,扎堆整容 高考结束,本应是学生们放松身心、展望未来的时刻,然而却出现了扎堆整容的现象。一些学生在高考压力之下,...
西北乳业龙头“股东劫”,322... 第 2323期〡2025/07/08近日,西北乳业头部公司庄园牧场(002910,SZ)的一则公告掀...
一瓶988元!揭秘天价水的暴利... 矿泉水这门生意,其实是一门距离和定价的博弈。前段时间有个很离谱的新闻。在第五届消博会上,出现了一款名...
田园生化IPO:屋漏偏逢连夜雨... 作为保障粮食安全的关键领域,农药行业一直备受资本市场关注。2025年6月20日,广西田园生化股份有限...
A股收评:沪指逼近3500点,... A股三大指数今日集体上涨,截至收盘,沪指涨0.7%,报3497.48点,逼近3500点深成指涨1.4...
小红书,当代年轻人的线上兴趣班 🎈宝子们👋,小红书简直就是当代年轻人的线上兴趣班呀!在这里,你能轻松找到各种让你心动的兴趣领域。无论...
倍轻松实控人占款遭监管问询,毛... 近日,倍轻松(688793.SH)披露了上交所对其2024年年报发出的《监管问询函》及公司、督导机构...
巨化股份:预计上半年净利润19... 7月8日,浙江巨化股份有限公司(巨化股份,600160.SH)发布业绩预告,预计2025年半年度归属...
非洲电商:中国卖家的下一个黄金... 作者|李小天“最近,我们发现很多欧美电商平台的卖家,或者是东南亚平台的卖家,都纷纷在了解非洲市场。J...
十五五规划带来AI产业政策预期... 截至2025年7月8日 14:41,中证人工智能产业指数(931071)强势上涨2.54%,成分股乐...
茅台销售公司上半年既定经营任务... 7月8日,日前,贵州茅台酒销售有限公司2025年半年市场工作会在茅台会议中心召开。会上披露:2025...
半年度基金经理量化榜揭晓!殷陶... 私募排排网数据显示,截至6月30日,符合排名规则的量化产品数共1417只,合计规模约为1013.29...
一年4800亿,业绩炸裂,这家... 一年 4800 亿的业绩,堪称炸裂般的成就!这家企业究竟凭何能取得如此辉煌?首先,其拥有卓越的战略眼...
沪指要站上3500点,这次真的... 7月8日,市场全天震荡走高,创业板指领涨,沪指逼近3500点。截至收盘,沪指涨0.7%,深成指涨1....
燕京啤酒延续增长势头,上半年净... 蓝鲸新闻7月8日讯(记者 朱欣悦)7月8日,燕京啤酒(000729.SZ)发布2025年半年度业绩预...
缅甸危机持续、美国关税威胁,东... 据参考消息报道,印度东北部米佐拉姆邦的官员于7月7日表示,在此前4天里,敌对的钦族武装组织之间的冲突...