实验任务

  • 任务一:手机类的封装
  • 任务二:基于控制台的购书系统
  • 任务三:简单的投票程序

实验内容

任务一:手机类的封装

  • 任务目的
  1.  理解和掌握面向对象的设计过程
  2.  掌握类的结构和定义过程
  3.  掌握构造方法及其重载
  4.  掌握对象的创建和使用
  • 任务描述

    参考程序结果图,使用面向对象的思想模拟手机类,编写测试类,使用手机类创建对象,测试手机的各个属性和功能

     

  • 实施步骤

      任务分析:

    通过对现实中手机的分析,手机类(Phone)具有一下属性和功能

    (1) 具有属性:品牌(brand)、型号(type)、价格(price)、操作系统(os)和内存(memory)

    (2) 具有功能:查看手机信息(about())、打电话(call(String no))、玩游戏(比如玩猜数字游戏)

代码实现:

手机类Phone.java参考如下代码:

public class Phone {

    String brand;  // 品牌
String type; // 型号
String os; // 操作系统
int price; // 价格
int memorySize; // 内存 // 无参构造
public Phone(){ } // 有参构造
public Phone(String brand, String type, String os, int price, int memorySize) {
this.brand = brand;
this.type = type;
this.os = os;
this.price = price;
this.memorySize = memorySize;
} // 关于本机
public void about() {
System.out.println("品牌:"+brand+"\n"+"型号:"+type+"\n"+
"操作系统:"+os+"\n"+"价格:"+price+"\n"+"内存:"+memorySize+"\n");
} // 打电话
public void call(int num) {
System.out.println("使用自动拨号功能:");
String phoneNo = "";
switch (num) {
case : phoneNo = "爷爷的号。";break;
case : phoneNo = "奶奶的号。";break;
case : phoneNo = "妈妈的号。";break;
case : phoneNo = "姐姐的号。";break;
}
System.out.println(phoneNo);
}
// 打游戏
public void playGame() {
System.out.println("玩猜字游戏。");
}
// 下载音乐
public void downloadMusic(String song) {
System.out.println("开始下载。。。。");
System.out.println("下载完成。。。。");
}
// 播放音乐
public void playMusic(String song) {
System.out.println(song+" begin play");
}
}

测试类PhoneTest.java类参考如下代码:

public class Test {
public static void main(String[] args) {
// 通过无参构造创建手机对象一
Phone p1 = new Phone();
p1.brand = "华为";
p1.type = "华为荣耀magic";
p1.os = "Android 7";
p1.price = ;
p1.memorySize = ;
// 测试p1的各项功能
p1.about();
p1.call();
p1.playGame();
p1.playMusic("好汉歌");
System.out.println("********************"); Phone p2 = new Phone("小米","小米6s","mi_9",,);
// 测试p2 的各项功能
p2.about();
p2.call();
p2.playGame();
p2.playMusic("Without you"); }
}

任务二:基于控制台的购书系统

  • 任务目的
  1. 理解和掌握面向对象的设计程序
  2. 会用类图进行面向对象设计
  3. 掌握封装的实现及好处
  4. 包和访问控制修饰符的使用
  • 任务描述
  1. 输出所有图书的信息:包括每本书的编号、书名、单价、库存
  2. 顾客购买书:根据提示输入图书编号来购买书,并根据提示输入购买书的的数量
  3. 购买完毕后输出顾客的订单信息:包括订单号、订单明细、订单总额

   

  • 实施步骤

    任务分析:

      该系统中必须包括3个实体类,类名及属性设置如下:

      图书类(Book):

        图书编号(id)

        图书名称(name)

        图书单价(price)

        库存数量(storage)

      订单项类(OrderItem):

        图书(book)

        购买数量(num)

      订单类(Order):

        订单号(orderID)

        订单总额(total)

        订单项列表(items)

代码实现:

图书类

/**
* 图书类
* @author Administrator
*
*/
public class Book { private int id; // 编号
private String name; // 书名
private double price; // 价格
private int storage; // 库存 // 有参构造
public Book(int id, String name, double price, int storage) {
this.id = id;
this.name = name;
this.price = price;
this.storage = storage;
}
// 获取书号
public int getId() {
return id;
}
// 获取书名
public String getName() {
return name;
}
// 获取价格
public double getPrice() {
return price;
}
// 获取库存
public int getStorage() {
return storage;
} }

订单项类:

public class OrderItem {

    private Book book;
private int num; // 有参构造方法
public OrderItem(Book book, int num) {
this.book = book;
this.num = num;
} // 获取图书对象
public Book getBook() {
return book;
}
// 获取订购图书数量
public int getNum() {
return num;
} }

订单类:

public class Order {

    private String orderId;
private OrderItem items[];
private double total; // 有参构造
public Order(String orderId) {
this.orderId = orderId;
this.items = new OrderItem[];
} // 获取订单号
public String getOrderId() {
return orderId;
}
// 获取订单列表
public OrderItem[] getItems() {
return items;
}
// 获取订单总额
public double getTotal() {
calTotal();
return total;
}
// 指定一个订单项
public void setItem(OrderItem item, int i) {
this.items[i] = item;
}
// 计算订单总额
public void calTotal() {
double total = ;
for (int i = ; i < items.length; i ++) {
total += items[i].getNum() * items[i].getBook().getPrice();
}
this.total = total;
}
}

主类参考代码如下:

import java.util.Scanner;

/**
* 图书商店类(主类)
* @author Administrator
*
*/
public class PayBooks {
public static void main(String[] args) {
Book books[] = new Book[]; //模拟从数据库中读取图书信息并输出
outBooks(books);
// 顾客购买图书
Order order = purchase(books);
// 输出订单信息
outOrder(order);
}
// 顾客购买图书
public static Order purchase(Book books[]) {
Order order = new Order("");
OrderItem item = null;
Scanner in = new Scanner(System.in);
for (int i = ; i < ; i ++) {
System.out.println("请输入图书编号选择图书:");
int cno = in.nextInt();
System.out.println("请输入购买图书数量:");
int pnum = in.nextInt();
item = new OrderItem(books[cno-],pnum);
order.setItem(item, i);
System.out.println("请继续购买图书。");
}
in.close();
return order;
} // 输出订单信息
public static void outOrder(Order order) {
System.out.println("\n\t图书订单");
System.out.println("图书订单号:"+order.getOrderId());
System.out.println("图书名称\t购买数量\t图书单价");
System.out.println("--------------------------------------"); OrderItem items[] = order.getItems();
for(int i = ; i < items.length; i ++) {
System.out.println(items[i].getBook().getName()+"\t"+items[i].getNum()
+"\t"+items[i].getBook().getPrice());
//System.out.println("\n");
}
System.out.println("---------------------------------------");
System.out.println("订单总额:\t\t"+order.getTotal());
} // 模拟从数据库中读取图书信息并输出
public static void outBooks(Book books[]) {
books[] = new Book(,"Java教程",30.6,);
books[] = new Book(,"JSP教程",42.1,);
books[] = new Book(,"SSH架构",47.3,);
System.out.println("\t图书列表");
System.out.println("图书编号\t图书名称\t\t图书单价\t库存数量");
System.out.println("----------------------------------------");
for (int i = ; i < books.length; i ++) {
System.out.println(i++"\t"+books[i].getName()+"\t"+
books[i].getPrice()+"\t"+books[i].getStorage());
}
System.out.println("----------------------------------------");
} }

任务三:简单投票系统

  • 任务目的
  1. 掌握static关键字的使用
  2. 区分实例变量和类变量、实例方法和类方法的区别
  • 任务描述

  编程实现一个投票程序,实现选民投票,每个选民只能投一次票,当投票总数达到100时或者

  主观结束投票时,同时统计投票选民和投票结果。程序运行结构如下:

  

  • 实施步骤

    任务分析

      从任务描述中的抽象出选民Voter类,它具有姓名,最大投票数,当前投票总数,和投票意见。

      因为所有选民都会改变同一个数据,即投票次数,一次把它定义成静态变量:

      private static int count;

      另外,为了防止选民重复投票,必须保存参与投票的选民信息,可采用一个集合来存放已经投票的选民对象。

      private static Set<Voter> voters = new HashSet<Voter>();

      最后编写测试Voter类的投票和打印投票结果功能。

代码实现:

import java.util.HashSet;
import java.util.Set; public class Voter { // 属性的定义
private static final int MAX_COUNT = ; // 最大投票数
private static int count; // 投票数 // 静态变量,存放已经投票的选民
private static Set<Voter> voters = new HashSet<Voter>();
private String name;
private String answer;
// 构造方法
public Voter(String name) {
this.name = name;
} // 投票
public void voterFor(String answer) {
if (count == MAX_COUNT){
System.out.println("投票结束。");
return ;
}
if (voters.contains(this)){
System.out.println(name+" 你不允许重复投票。");
} else {
this.answer = answer;
count ++;
voters.add(this);
System.out.println(name+" 感谢你的投票。");
}
} // 打印投票结果
public static void printVoterResult() {
System.out.println("当前投票数为:"+count);
System.out.println("参与投票的选民和结果如下:"); for (Voter voter: voters) {
System.out.println(voter.name+" 意见 "+voter.answer);
}
} public static void main(String[] args) {
// 创建选民对象
Voter tom = new Voter("Tom");
Voter jack = new Voter("Jack");
Voter mike = new Voter("Mike"); // 选民开始投票
tom.voterFor("是");
tom.voterFor("否");
jack.voterFor("是");
mike.voterFor("是"); // 打印投票结果
Voter.printVoterResult();
} }

Java 实验案例(类和对象篇)的更多相关文章

  1. Java 实验案例(多态)

    实验任务 任务一:图形面积周长计算小程序 任务二:饲养员喂养动物程序 实验内容: 任务一: 图形面积周长计算 任务目的: 掌握多态的含义及应用场合 掌握上转型对象和多态的实现 掌握abstract关键 ...

  2. Java 反射 分析类和对象

    Java 反射 分析类和对象 @author ixenos 摘要:优化程序启动策略.在运行时使用反射分析类的结构和对象 优化程序启动策略 在启动时,包含main方法的类被加载.它会加载所有它需要的类. ...

  3. 【JAVA零基础入门系列】Day11 Java中的类和对象

    今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...

  4. Java学习笔记十三:Java中的类和对象

    Java中的类和对象 一:什么是对象: 总的来说就是"万物皆对象",客观存在的事物皆为对象.是计算机所关注的具体信息. 对象(object)是一件事.一个物体.一个名词,或可以获得 ...

  5. Java自学-面向对象 类和对象

    Java中的类和对象 引入面向对象的基本概念 假设,我们要设计一个LOL这样的游戏,使用面向对象的思想来设计,应该怎么做? 步骤 1 : 设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必 ...

  6. Java程序设计基础笔记 • 【第7章 Java中的类和对象】

    全部章节   >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...

  7. Java核心基础第5篇-Java面向对象_类和对象

    Java面向对象之类和对象 一.面向对象概述 Java是完全的面向对象编程(Object Oriented Programming),简称OOP. 面向对象编程的思维方式更加符合大家的日常生活,因为我 ...

  8. java中的类和对象

    Java中的类是一个模板,它用于描述一类对象的行为和状态. 对象则是类中的一个实例,对象有状态(属性)和行为(方法).例如一条狗就是一个对象,他的状态就是他的颜色,名字,品种:他的行为就是叫,摇尾巴, ...

  9. Java反射获取类和对象信息全解析

    反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题. 在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了. 获取类对象 Class.f ...

  10. java面向对象之 类和对象

    OOP:Object Oriented Programming(面向对象编程) 面向对象: 1:将复杂的事情简单化. 2:面向对象将以前的过程中的执行者,变成了指挥者. 3:面向对象这种思想是符合现在 ...

随机推荐

  1. 【xsy1214】 异或路径(xorpath) 点分治+可持久化trie

    题目大意:给你一棵$n$个点的树,每个点有一个点权$x$,问你所有路径中点权异或和最大的路径的异或和 数据范围:$n≤30000$,$x≤2^{31}-1$. 如果是边上有点权的话非常简单,直接一个$ ...

  2. 简单选择排序实现(Java)

    简单选择排序实现 简单选择排序就是通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i (1 ≤ i ≤ n)个记录交换. 代码实现: public class Selec ...

  3. uiautomatorviewer 双击闪退问题解决

    最近在学习app自动测试,结果在打开uiautomatorviewer查看app界面元素时,就出现了闪退的问题,找了很多很多方法,最后终于可以解决了,详情请继续往下看 首次安装adt的步骤 将下载的压 ...

  4. Linux CentOS7系统中mysql8安装配置

    mysql是世界上最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司所有.今天我将记录一下如何在Linux centos7系统上安装和配置MySQL. 目录 环境准 ...

  5. (转)windows 2003 远程桌面关闭 运行程序退出解决

    windows 2003 远程桌面关闭 运行程序退出解决 原文:http://2798996.blog.51cto.com/2788996/503365 情况:远程桌面到2003,运行一个程序,然后关 ...

  6. Git-基本操作(图文)

    场景一: 已经用git add 命令把文件加入到暂存区了,这个时候想退回怎么办? 添加文件到暂存区 :git add . 将单个文件撤回到工作区:git rm --cached [文件路径] 将目录撤 ...

  7. postman—Runner的使用

    1.首先在postman新建要批量运行的接口文件夹,新建一个接口,并设置好全局变量. 2.然后在Test里面设置好要断言的方法 如: pm.test("Status code is 200& ...

  8. postman—数据同步和创建测试集

    postman使用之二:数据同步和创建测试集 一.数据同步 启动postman 后在右上角可以登录账号,登录后就可以同步自己的api测试脚本,连上网在办公区在家都可以同步. 二.创建测试集 1.点击c ...

  9. MediaWIKI部署流程

    1.下载mediawiki,地址:https://www.mediawiki.org/wiki/MediaWiki 2.下载xxamp集成软件,地址:https://www.apachefriends ...

  10. Chapter 3 Phenomenon——15

    "So, what's the verdict?" he asked me. “所以,你的结论是什么?”他问我. “那么,他们对你的判决是?”他问我. "There's ...