通过两个案例,从C语言过渡到Java面向对象编程
⭐欢迎来到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面向对象编程相关推荐
- 阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第21章:抽象类与接口应用:课时94:案例分析二(绘图处理)
案例分析二 考虑一个表示绘图的标准,并且可以根据不同的图形来进行绘制: interface IGraphical { // 定义绘图标准public void paint() ; // 绘图 } cl ...
- 阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第30章:链表的定义与使用:课时145:综合实战:超市购物车(含完整代码)
使用面向对象的概念表示出下面的生活场景:小明去超市买东西,所有买到的东西都放在了购物车之中,最后到收银台一起结账. (用购物车标准来降低耦合) 1.定义出一个商品的标准 interface IGood ...
- Go语言基础之接口(面向对象编程下)
1 接口 搜书 198200.com 1.1 接口介绍 接口(interface)是Go语言中核心部分,Go语言提供面向接口编程,那么接口是什么? 现实生活中,有许多接口的例子,比如说电子设备上的充电 ...
- R语言基于R6的面向对象编程
R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可 ...
- c语言中如何使用面向对象编程,如何使用C语言的面向对象
我们都知道,C++才是面向对象的语言,但是C语言是否能使用面向对象的功能? (1)继承性 typedef struct _parent { int data_parent; }Parent; type ...
- [C++程序语言设计笔记一]面向对象编程抽象,继承,重写基本介绍
今天是个不错的日子,不仅有人收了我做徒弟从此传授我有关C++的一些知识,由于前一段时间喜欢上了外挂的研究也用到了一些MFC的知识及一些Windows APIs编程,但是对C++还是没有从根本上认识.我 ...
- java 168转换成861_java实验-java语言面向对象编程基础
java实验-java语言面向对象编程基础 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 8.90 积分 广州大学学生实验报告广州大学学生实验报告 ...
- Java网络编程案例--CS模型的简单实现
Java网络编程案例–CS模型的简单实现 Java网络编程案例CS模型的简单实现 基本概述 程序原理图 源代码 基本概述 该程序采用C/S模型,在服务器端简单的建立了一个多线程类,来实现对多个客户端传 ...
- 7月17日云栖精选夜读:深度 | 两个案例,掌握AI在大数据领域的前沿应用
近日,全球技术学习技术大会首次在京举行,阿里巴巴数据技术及产品部资深算法专家杨红霞(鸿侠)作为特邀嘉宾出席并发表主题演讲.鸿侠从什么是数据新能源说起,接着介绍了阿里目前比较成功的两款数据产品,一个是是 ...
最新文章
- 如何在 Fedora 上使用 Podman
- ubuntu18.04.4 pip3 换清华、阿里、豆瓣 源
- [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十三:在DetailsView控件中使用TemplateField...
- VISP视觉库框架结构与使用入门
- Linux下多网卡MAC配置问题
- internetreadfile读取数据长度为0_Datax3.0的安装和基本使用
- Java Web——图像上传
- iOS App版本号compare
- 开源数据访问组件Smark.Data 1.7新增功能
- 孔夫子告诉你:编程到底能教会你什么!
- python 排列组合算法_排 列 组 合 公 式 及 排 列 组 合 算 法
- 关于PHP会话:session和cookie
- 【oracle】sql处理重复数据
- 阿里巴巴编码规范认证之步骤详解
- mtk2503 如何支持使用epo?
- 服务器信号满格但网速很慢,信号满格网速太慢是什么原因,网速慢是什么原因-...
- 服务器时间修改连接超时时间设置,云服务器连接超时时间设置
- 在Mac中删除残留的启动台图标
- 谋杀案和杨辉三角改进版
- Xz1 android p更新,索尼XZ1/XZP港版正式推送Android 9.0更新