当前位置:首页 » 《资源分享》 » 正文

通过两个案例,从C语言过渡到Java面向对象编程_guankunkunwd的博客

5 人参与  2021年11月03日 08:03  分类 : 《资源分享》  评论

点击全文阅读


欢迎来到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面向对象性语言的特性,一切皆对象。用对象解决问题。
在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/30428.html

案例  商品  华为  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1