网站首页 > 精选教程 正文
原文
传统的过程式程序中,必须从最上面的main 函数开始编写程序。设计一个面向对象系统时,则没有所谓的“最上面”。因此,学习OOP的初学者常常会感到无从下手。答案是:首先从识别类开始,然后再为各个类添加方法。
识别类的一个简单经验是在分析问题的过程中寻找名词,而方法对应动词。
例如,在订单处理系统中,有这样一些名词:
- 商品(Item)
- 订单(Order)
- 发货地址(Shipping address)
- 付款(Payment)
- 账户(Account)
- 从这些名词就可以得到类 Item、 Order 等。
接下来查找动词。商品要添加(add)到订单中,订单可以发货(ship)或取消(cancel),另外可以对订单完成付款(apply)。对于每一个动词,当“添加”“取消”或者“完成付款”,要识别出负责完成相应动作的对象。例如,当一个新商品添加到订单中时,订单对象就是负责的对象,因为它知道如何存储商品以及如何对商品进行排序。也就是说,add应该是Order 类的一个方法,它接受一个Item 对象作为参数。
当然,这种“名词”与“动词”原则只是一种经验,在创建类的时候,只有经验能帮助你确定哪些名词和动词重要。
个人补充
参考设计class
package corejava.chapter4.lession1;
import java.util.Scanner;
public class Chicken {
String name;
String skill;
void setName(String n) {
name = n;
}
void study(String s) {
skill = s;
}
void showSkill() {
System.out.println(skill);
}
public static void main(String[] args) {
Chicken c1 = new Chicken();
c1.setName("小花");
c1.study("唱歌");
Chicken c2 = new Chicken();
c2.setName("小白");
c2.study("跳舞");
Chicken c3 = new Chicken();
c3.setName("刘总");
c3.study("书法");
Chicken c4 = new Chicken();
c4.setName("肥肥");
c4.study("下蛋公鸡,公鸡中的战斗机,哦也");
Chicken[] cs = {c1, c2, c3, c4};
Scanner sc = new Scanner(System.in);
int x = -1;
while (x != 0) {
System.out.println("请选择要对话的chicken 1,2,3,4,退出请按0");
x = sc.nextInt();
if (x < 1 || x > 4) {
System.out.println("选择错误,不存在的chicken");
}else{
int index = x - 1;
Chicken cx = cs[index];
System.out.println("my name is " + cx.name);
cx.showSkill();
}
}
System.out.println("bye bye");
}
}
练习题
下面两个题目
1是基本题目,应该没有难度,如果设计不出来,需要加强基础学习和练习了。
2是选做题目,做不出来也正常,没有关系,属于需要变通的题目,如果能做出来,说明之前的学习效果很好。
题目1 , 简单:
设计一个Cat 类,
猫分公母,有不同颜色,不同体重。
猫有不同的爱吃的东西,比如:老鼠,鱼,猫罐头,裤子腿等
所有的猫都会喵喵叫。
参考上述的范例,设计此Cat类,main函数中,生成4个Cat实例,使用交互程序选择不同的Cat ,查看Cat的属性,并让它吃点东西,叫一声。
题目2,加点难度:
设计一辆车
品牌比如用 Byd
车牌照当然是每辆车各自的
油箱容量设置为25
百公里油耗按照6.5来算
车子可以上牌照
注意:没有上牌照,不能开车,不能加油。必须先上牌照
车子有行驶和加油功能
加油的话,如果不满25,就按指定的数字加油
如果超过25就加到25,剩下的退掉
行驶的话,按里程减少油
如果一次行驶的里程导致油耗尽
就退出程序,打印油已耗尽,再见。(这里注意,退出系统不再是选择界面, 而是行驶后检查油量,油耗完的时候退出)
猜你喜欢
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 5.2.3相等测试与继承
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 5.2.4 hashCode方法
- 2024-11-28 Java入门书单
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 4.3.7 隐式参数与显式参数
- 2024-11-28 全网最完整的免费java教程讲义系列(四)——java的流程控制
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 4.6 对象构造 4.6.1重载
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 3.10 数组
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 4.3 自定义类
- 2024-11-28 2019年Java核心技术我整理了200多页pdf,今天分享给你
- 2024-11-28 java 核心技术12版卷1 - 1.3 Java applet 与 Internet
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)