做网站赚谁的钱,网络销售推广是做什么的具体,wordpress作者信息插件,深圳高速建设公司目录一#xff1a;背景介绍业务场景#xff1a;业务分析#xff1a;二#xff1a;实现思路1、面向过程#xff1a;2、面向对象#xff08;抽象、封装、继承、多态#xff09;3、面向对象#xff08;抽象、封装、继承、多态、反射#xff09;三#xff1a;实现过程1、…
目录一背景介绍业务场景业务分析二实现思路1、面向过程2、面向对象抽象、封装、继承、多态3、面向对象抽象、封装、继承、多态、反射三实现过程1、面向过程代码编写实现效果2、面向对象抽象、封装、消息监听、事件和委托建模代码编写发消息人类接收信息人类业务封装类客户端类实现效果3、面向对象抽象、封装、消息监听、反射代码编写发送消息人类接收消息人类业务封装类客户端类实现效果四总结面向过程思想面向对象思想封装的好处一背景介绍
业务场景
米老师来壹佰八楼需要进入办公室的门这时需要一个开门的人
业务分析
根据业务场景抽象出了四个类发消息人类、接收信息人类、业务封装类、客户端
二实现思路
1、面向过程
何老师告诉米老师要是在哪儿然后米老师到壹佰之后去拿上钥匙开门
2、面向对象抽象、封装、继承、多态
何老师管钥匙开门这个前提米老师是知道的。当米老师到壹佰之后喊一声何老师打开水麒麟的门何老师听到消息之后就过来开门了
3、面向对象抽象、封装、继承、多态、反射
有多个老师管钥匙开门这个前提米老师是知道的。当米老师到壹佰之后喊一声任意一个老师打开水麒麟的门被喊到的那个老师听到消息之后就过来开门了
三实现过程
1、面向过程
代码编写
public class Client {public static void main(String[] args) {System.out.println(我是米老师我需要开门);System.out.println(好的米老师我马上给您开门);}
}实现效果 2、面向对象抽象、封装、消息监听、事件和委托
面向对象的基础是抽象我们以开门小例子中为例可以抽象出四个类分别是发消息人类、接收消息人类、业务封装类、客户端类 那么我们看看这四个类是如何实现开门小例子的吧~
建模
共有两种建模方式
米老师依赖何老师何老师依赖米老师
我们以第二种建模方式为例
代码编写
发消息人类
发消息类中只需有一个发消息的方法
public class sendMessager {public void sendMessage(){System.out.println(我是米老师我需要开门);}
}接收信息人类
接收信息类中有一个私有的开门方法还有一个公有的接收信息方法因为是接收信息人类依赖发消息人类所以把teacherMi当作参数传给了receiveMessage(sendMessager techerMi)然后使用teacherMi调用teacherMi自己的发消息方法sendMessage()
public class receiveMessager {private void openDoor(){System.out.println(我是何老师我来开门了);}public void receiveMessage(sendMessager teacherMi){teacherMi.sendMessage();this.openDoor();}
}业务封装类
写了一个私有的business()方法进行封装。实例化了接收消息人类让接收信息人调用自己的接收信息方法receiveMessage()然后把发送信息人类当作参数传入receiveMessage(new sendMessager())。 接着在写一个公有的notice()方法来调用已经封装好的business()方法供其他类使用
public class Notice {private void business(){receiveMessager teacherHe new receiveMessager();teacherHe.receiveMessage(new sendMessager());}public void notice(){this.business();}
}客户端类
在main()方法里实例化了业务封装类Notice类然后使用实例化好的notice来调用自己暴露在外的notice()方法
public class Client {public static void main(String[] args) {Notice notice new Notice();notice.notice();}
}实现效果 3、面向对象抽象、封装、消息监听、反射
代码编写
发送消息人类
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 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 Client {public static void main(String[] args) throws Exception {Notice notice new Notice();notice.notice();}
}实现效果 四总结
面向过程思想
以过程为中心的编程思想使用函数实现面向过程的思想主要关注“怎么做”
面向对象思想
以对象为基础的编程思想主要关注“谁来做”
封装的好处
提高代码的安全性提高代码的复用性“高内聚”封装细节便于修改内部代码提高可维护性“低耦合”简化外部调用便于调用者使用便于扩展和协作