面向对象之类与对象
今天基本上已经进入了Java的核心内容面向对象
面向对象一共分了三大模块
今天我们来浅谈一下关于类与对象的问题
类是对一类事物的描述,是抽象的,概念上的定义;对象是实际存在的该类事物的每个个体,因此也称之为实例。如果将对象比作汽车,那么类就好比汽车的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计。类对事物的属性,也就是成员变量,操作属性的方法,也就是成员函数进行了封装,只要通过new关键字创建对象么就可以对对象的属性进行赋值,然后调用对象的方法进行各种操作,实现各种功能。这大概就是java面向对象三大特性之一即封装。
面向对象的实例
实现购物车的基本功能
在这里插入图片描述
代码实例
Goods类的建立
package ObjectOriented;
public class Goods {
int id; //商品编号
String name; //商品名称
double price; //商品价格
int buynumber; //商品购买数量
}
测试主函数
package ObjectOriented;
import java.util.Scanner;
public class ShopCar {
public static void main(String[] args) {
//定义商品类,用于后期创建商品对象
//定义一个购物车对象,使用一个数组表示
Goods[] shopCar = new Goods[100]; //Goods为新建的类名,也是所创建购物车数组的类型名
//搭建操作架构
while (true) {
System.out.println("请选择以下项目进行操作:");
System.out.println("添加商品到购物车:add");
System.out.println("查询购物车的商品:query");
System.out.println("修改商品购买的数量:update");
System.out.println("结算购买商品金额:pay");
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的选择");
String command = sc.next();
switch(command){
case "add":
addGGoods(shopCar,sc);
break;
case "query":
queryGoods(shopCar);
break;
case "update":
updateGoods(shopCar,sc);
break;
case "pay":
payGoods(shopCar);
break;
default:
System.out.println("没有该功能!");
}
}
}
private static void payGoods(Goods[] shopCar) {
//显示购物车内的商品信息
queryGoods(shopCar);
//定义一个变量来承接购物车累加总金额
double money = 0;
//遍历购物车数组,并且使每个商品的数量*单价进行求和
for (int i = 0; i < shopCar.length ;i++) {
Goods g = shopCar[i];
if(g != null){
money += (g.buynumber * g.price);
}
else{
break;
}
}
System.out.println("购物车内订单的总金额为" + money);
}
private static void updateGoods(Goods[] shopCar,Scanner sc) {
//让用户输入要修改的商品id ,根据id查询出要修改的商品对象
//单独写出一个方法进行实现
while (true) {
System.out.println("请输入要修改的商品信息的id");
int id = sc.nextInt();
Goods g = getGoodsbyid(shopCar,id);
if(g == null){
System.out.println("抱歉没有查找到所对应编号的商品");
}
else{
//说明该商品存在
//进行更改
System.out.println("请输入"+g.name+"的最新购买数量");
int buyNumber = sc.nextInt();
g.buynumber = buyNumber;
System.out.println("修改完成");
queryGoods(shopCar);
break;
}
}
}
//单独的方法根据id查找商品信息
public static Goods getGoodsbyid(Goods[] shopCar,int id){
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i]; //用变量进行承接,后期表示简单方便
if(g!=null){
//判断这个商品是不是我们要找的
if(g.id == id){
return g;
}
else{
return null;
}
}
}
return null; //代表找完了100个商品都没有找的id一样的商品
}
private static void queryGoods(Goods[] shopCar) {
//查询购物车信息并展示
System.out.println("=======查询信息如下==========");
System.out.println("编号\t\t名称\t\t\t价格\t\t\t购买数量");
for (int i = 0; i < shopCar.length; i++) {
Goods g = shopCar[i];
if(g != null){
//展示商品对象
System.out.println(g.id+"\t\t"+g.name+"\t\t"+g.buynumber+"\t\t"+g.price);
}
else{
break;
}
}
}
private static void addGGoods(Goods[] shopCar,Scanner sc) {//上方已经存在一个录入扫描器,使用参数承接则无需在方法中再次建立扫描器
//录入商品商品的信息
System.out.println("请录入购买商品的信息:");
System.out.println("请输入商品的编号:");
int id = sc.nextInt();
System.out.println("请录入购买商品的名称:");
String name = sc.next();
System.out.println("请录入所需商品的数量:");
int buynumber = sc.nextInt();
System.out.println("请录入要购买商品的价格");
double price = sc.nextDouble();
//把这个购买的商品信息封装成一个商品对象
Goods g = new Goods();
g.id = id;
g.name = name;
g.buynumber = buynumber;
g.price = price;
//把商品对象添加到购物车数组中去
for (int i = 0; i < shopCar.length; i++) {
if(shopCar[i] == null){
//说明此位置没有元素存入
shopCar[i] = g;
break;//商品添加成功
}
}
System.out.println("您的商品" + g.name + "已经成功加入购物车");
}
}
今天的学习就是这样
通俗来讲
类就是一个大的容器,里面包含了同一个种类的不同属性的内容。比如说可以定义一个学生类,里面可以创建不同的变量比如说学生学号,学生姓名以及学生的年龄和年纪。在类中定义好后,在测试函数中可以进行对类的调用。则此时类名就变成了定义对象时的类型。而后定义的这个变量里面基于可以包含类里面定义的类型,就像是一个包罗万象的容器一个变量可以包罗同一个类型的多种属性。
类在后期的工程开发中是一个非常重要的点
在后期也会和封装等等一起使用
那么今天就是这些
明天见!