欢迎来到JAVA语法专栏,一起学习,一起进步

金九银十秋招季,也是开学的时候,不少同学开了JAVA这门课。一起来看看这两个案例来熟悉熟悉吧。

一、案例来源

案例源自Java基础案例教程一书,现为学校面向对象编程课程教科书。由黑马程序员编著。文章案例节选自38页案例2-1 商品入库,及44页案例2-2 小明都买什么。


二、案例基础

由于是需要用Java完成,就需要知道一些基础知识,不然后面的代码是看不懂的。这里附上之前类和对象博客的链接:

Java 类和对象详述

在这里在稍微总结一下:Java代码依据于类和对象,类是一类事物的统称,也可以理解成一把枪的构造蓝图。对象是类实例化出来的具体的事物。

Java当中的类和C语言的结构体相似,可以在类中设置属性、字段。不过Java还可以在类中写一些方法,也就是C语言中的函数。在创建类时需要在前面加上class+类名。举个例子:

class   Person{/*** name、age均为Person类中的字段、属性* eat方法是Person类的方法,带有一个String类型的参数*/String name;int age;public  void eat(String name){System.out.println(name+"吃饭");}
}

类的构造方法:
方法中有一种特殊的叫构造方法,在实例化对象的时候会被自动调用的方法,方法名字和类名相同, 用于对象的初始化;

三、案例讲解

3.1 案例2-1 商品入库

案例信息:

现要对华为和小米两种手机产品进行入库,本案例要求编写一个模拟商品入库的程序,需要在控制台输入入库商品的数量,最后打印出仓库中所有商品详细信息,以及所有商品的总库存数和库存商品总金额。

商品信息如下:
● 品牌型号
● 尺寸
● 价格
● 配置
● 库存
● 总价

▲总结:
输入要求:从控制台输入入库商品的数量
输出要求:打印仓库的所有商品信息,总库存数,库存商品总金额

案例设计思路:将华为和小米两个商品设计成两个类,他们的商品信息就是类中的属性,在创建一个带有商品数量的参数的构造方法,直接在构造方法里打印出输出要求的信息即可。


设计华为、小米商品类,及构造方法
华为:

class huaWei {public String brand = "华为";public int size = 20;public int price = 3000;public String configure = "mate40e全网通(8G+128G)(5G版)";public int inventory  ;public int sumPrice ;public  huaWei(int numhw) {System.out.println("品牌"+this.brand + " " +"尺寸"+ this.size + " " +"单价"+this.price + " " + "总价"+numhw*price + " "+"配置" + this.configure + " " + "库存"+numhw);}
}

小米:

class xiaoMi {public String brand = "小米";public int size = 30;public int price = 3500;public String configure = "小米11,为发烧而生";public int inventory ;public int sumPrice ;public  xiaoMi(int numxm) {System.out.println("品牌"+this.brand + " " +"尺寸"+ this.size + " " +"单价" +this.price + " "  +"总价"+numxm*price + " "+"配置" + this.configure + " " +"库存"+ numxm);}}

这里设计了带有一个参数的构造方法,原因是案例要求输入商品入库数量,这样才能根据入库数量求出库存和,商品总价。

设计Main方法,输入数据
在Java中,输入是需要导包的,就像C语言写的#inlcude<stdio.h>引头文件类似。输入导的是Scanner包。也可以直接导util.*,这个包包含了更多的方法。导包格式为:
import java.包名+;

通过导包,我们可以使用Scanner类,这就是Java输入的类,先实例化一个对象,对象名随意。但还是建议起的有意义一些,让人看得明白,在=号右边的圆括号中的System.in是因为我们是从控制台输入数据,所以需要加上这个参数。

Scanner scanner = new Scanner(System.in);

整个main方法:

import java.util.*;/***  案例2-1 商品入库*/
public class Solution0913 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int numHW = 0;int numXM=0;System.out.println("请输入华为的商品数量  ");numHW = scanner.nextInt();System.out.println("华为的商品信息:");huaWei huaWei1 = new huaWei(numHW);System.out.println("请输入小米的商品数量  ");numXM=scanner.nextInt();System.out.println("小米的商品信息:");xiaoMi xiaoMi=new xiaoMi(numXM);}
}

案例测试:
点击运行后,提示输入华为的商品数量,在这里我输入2,方便测试。

控制台打印出华为的商品信息,并自动换行,后再提示输入小米的商品数量。这里我同样输入2。

这样2-1案例就完成了。

3.2 案例2-2 小明都可以买什么

案例信息:

编写一个智能购物计算小程序,在一家商店有书本、铅笔、橡皮、可乐、零食五种商品,商品价格如表2-8所示。

商品名称 价格(元)
书本 12
铅笔 1
橡皮 2
可乐 3
零食 5

假如你带了20元,且必须购买一本书,剩余的钱可以购买那些商品?可以购买几件?购买完还剩多钱?

案例设计思路:将5中零食都设计成类,属性是他们的价格。用20减去一本书的钱还有8块钱,在用这8块钱分别除其他4中商品的价格,如果不能整除的就取模,算出还剩多少钱。最后打印结果。

设计5种商品类

class  book{int price=12;
}
class pencil{int price=1;
}
class eraser{int price=2;
}
class coco{int price=3;
}
class food{int price=5;
}

main方法:

/*** 案例2-2 小明都买什么*/
public class solution2_2 {static  int money=20;public static void main(String[] args) {book bookBought=new book();// 20快买了一本书还剩8快。money=money-bookBought.price;pencil pencil=new pencil();int countPencil=money/pencil.price;System.out.println("还可以买"+countPencil+"支笔");eraser eraser=new eraser();int countEraser=money/eraser.price;System.out.println("还可以买"+countEraser+"个橡皮");coco coco=new coco();int countCoco=money/coco.price;int resultMoney=money%coco.price;System.out.println("还可以买"+countCoco+"瓶可乐"+"还剩"+resultMoney+"元");food food=new food();int countFood=money/food.price;int resultMoeny2=money%food.price;System.out.println("还可以买"+countFood+"包零食"+"还剩"+resultMoeny2+"元");}
}

案例测试:
运行结果:

结尾:
以上就是这次的两个案例,主要还是多体会Java面向对象性语言的特性,一切皆对象。用对象解决问题。

通过两个案例,从C语言过渡到Java面向对象编程相关推荐

  1. 阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第21章:抽象类与接口应用:课时94:案例分析二(绘图处理)

    案例分析二 考虑一个表示绘图的标准,并且可以根据不同的图形来进行绘制: interface IGraphical { // 定义绘图标准public void paint() ; // 绘图 } cl ...

  2. 阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第30章:链表的定义与使用:课时145:综合实战:超市购物车(含完整代码)

    使用面向对象的概念表示出下面的生活场景:小明去超市买东西,所有买到的东西都放在了购物车之中,最后到收银台一起结账. (用购物车标准来降低耦合) 1.定义出一个商品的标准 interface IGood ...

  3. Go语言基础之接口(面向对象编程下)

    1 接口 搜书 198200.com 1.1 接口介绍 接口(interface)是Go语言中核心部分,Go语言提供面向接口编程,那么接口是什么? 现实生活中,有许多接口的例子,比如说电子设备上的充电 ...

  4. R语言基于R6的面向对象编程

    R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可 ...

  5. c语言中如何使用面向对象编程,如何使用C语言的面向对象

    我们都知道,C++才是面向对象的语言,但是C语言是否能使用面向对象的功能? (1)继承性 typedef struct _parent { int data_parent; }Parent; type ...

  6. [C++程序语言设计笔记一]面向对象编程抽象,继承,重写基本介绍

    今天是个不错的日子,不仅有人收了我做徒弟从此传授我有关C++的一些知识,由于前一段时间喜欢上了外挂的研究也用到了一些MFC的知识及一些Windows APIs编程,但是对C++还是没有从根本上认识.我 ...

  7. java 168转换成861_java实验-java语言面向对象编程基础

    java实验-java语言面向对象编程基础 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 8.90 积分 广州大学学生实验报告广州大学学生实验报告 ...

  8. Java网络编程案例--CS模型的简单实现

    Java网络编程案例–CS模型的简单实现 Java网络编程案例CS模型的简单实现 基本概述 程序原理图 源代码 基本概述 该程序采用C/S模型,在服务器端简单的建立了一个多线程类,来实现对多个客户端传 ...

  9. 7月17日云栖精选夜读:深度 | 两个案例,掌握AI在大数据领域的前沿应用

    近日,全球技术学习技术大会首次在京举行,阿里巴巴数据技术及产品部资深算法专家杨红霞(鸿侠)作为特邀嘉宾出席并发表主题演讲.鸿侠从什么是数据新能源说起,接着介绍了阿里目前比较成功的两款数据产品,一个是是 ...

最新文章

  1. 如何在 Fedora 上使用 Podman
  2. ubuntu18.04.4 pip3 换清华、阿里、豆瓣 源
  3. [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十三:在DetailsView控件中使用TemplateField...
  4. VISP视觉库框架结构与使用入门
  5. Linux下多网卡MAC配置问题
  6. internetreadfile读取数据长度为0_Datax3.0的安装和基本使用
  7. Java Web——图像上传
  8. iOS App版本号compare
  9. 开源数据访问组件Smark.Data 1.7新增功能
  10. 孔夫子告诉你:编程到底能教会你什么!
  11. python 排列组合算法_排 列 组 合 公 式 及 排 列 组 合 算 法
  12. 关于PHP会话:session和cookie
  13. 【oracle】sql处理重复数据
  14. 阿里巴巴编码规范认证之步骤详解
  15. mtk2503 如何支持使用epo?
  16. 服务器信号满格但网速很慢,信号满格网速太慢是什么原因,网速慢是什么原因-...
  17. 服务器时间修改连接超时时间设置,云服务器连接超时时间设置
  18. 在Mac中删除残留的启动台图标
  19. 谋杀案和杨辉三角改进版
  20. Xz1 android p更新,索尼XZ1/XZP港版正式推送Android 9.0更新

热门文章

  1. Android Firebase 服务简介
  2. backtrader与IB(盈透证券)实盘交易教程1---环境的配置
  3. 03.DOS基本命令与批处理
  4. 菜々香@おひるね中 汉化补丁
  5. Win10 32位及64位安装SQL 2000的方法
  6. 网络层:网际控制报文协议ICMP
  7. 2022年最新河北建筑八大员(质量员)模拟考试题库及答案解析
  8. 河北最新建筑八大员(材料员)机考真题题库及答案解析
  9. 反向编译了子弹短信的 APK,核心功能为整合网易云信 SDK
  10. 8:Java Conllections FrameWork-Java API 实战