文章目录

  • Java面向对象编程:
  • 类的基本概念
  • 定义类
  • 对象的创建与使用
  • 程序设计训练

Java面向对象编程:

类的基本概念

类和对象是面向对象程序设计方法中最核心的概念。

在Java中,必须先定义类,才能获得对象。

类的概念是为了让程序设计语言更好的描述事物。类是对某一类事物的描述,是抽象的定义;对象是实际存在的属于该类事物的具体个体,也称为实例。对象表示现实世界中可以明确标识的一个实体,比如说,一辆小汽车,一个学生,一本书等等。
面向对象编程就是使用对象进行程序设计

一般来说,类是由数据成员与函数成员封装而成的,其中数据成员表示类的属性,函数成员表示类的行为,由此,类描述了对象的属性和对象的行为。Java语言一般将封装于类内的函数称为“方法”。

注意:Java语言将数据成员称为域变量、属性、成员变量;经函数成员称为成员方法,简称为方法。

每个对象都有自己的状态和行为。

  1. 对象的状态
    又称为对象的属性,由具有当前值的数据域来表示,比如学生具有数据域name和sex,他们表示学生的属性。
  2. 对象的行为
    由方法定义。调用对象的一个方法就是要求对象完成一个动作。

定义类

由于类是将数据和方法封装在一起的一种数据结构,其中数据表示类的属性,方法表示类的行为,所以定义类其实就是定义类的属性与方法。
用户定义定义一个类实际就是定义一个新的数据类型,在使用类前必须先进行定义,然后才能利用定义的类来声明相应的变量,并创建对象。

public class 类名
 {//成员变量(代表属性的,一般是名词)
修饰符 数据类型 变量名称 = 初始化值;

 //2、成员方法(代表行为的,一般是动词)
 修饰符 返回值的数据类型 方法名称 (参数1,参数2,...){
 语句
 return 表达式;
 } 
}

举例:

public class Car {
    //属性(成员变量)
    String name;
    double price;

    //行为(方法)
    public void start(){
        System.out.println(name+"的价格是:"+price+"。");
    }
    
}

对象的创建与使用

创建对象:

类名 对象名 = new 类名();

对象的使用:

对象名.对象成员

程序设计训练

以上是基础知识,利用以上这些基础知识,来进行编程,设计一个类似于购物车的功能,来巩固java的基本知识点和以上关于面向对象的知识点,主要用到流程控制,数组,方法,面向对象等知识。

1.首先定义一个Goods类:

public class Goods {
    //属性(成员变量)
    int id;//商品编号;
    String name;//商品名称;
    double price;//商品价格;
    int number;//数量

    //方法
}

2.然后定义一个shopcarsDemo:

import java.util.Scanner;

public class shopcarsDemo {
    public static void main(String[] args) {
        /*        目标:创建一个类似于店铺的购物车的功能,可以实现往里边添加商品
        更新商品信息(比如更改数量或单价),查看已添加的商品,求所有商品总金额

        步骤:
        1.定义一个商品类,用于创建商品对象;
        2.定义一个数组对象,用来存放商品对象;
        3.定义各个方法实现各功能;
         */

        //1.定义类
        //2.定义数组对象存放200个商品
        Goods[] shopcar =new Goods[200];
        //3.实现各功能
        Scanner sc=new Scanner(System.in);
        OUT:
        while(true){
            System.out.println("请输入要执行的操作:");
            System.out.println("添加商品输入:a;更新商品信息输入:u;查看商品输入:c;求总金额输入:s;退出操作:q");
            String quire=sc.next();
            switch(quire) {
                case "a":
                    addGoods(shopcar);
                    break;//添加商品
                case "u":
                   updateGoods(shopcar);
                    break;//修改商品
                case "c":
                    checkGoods(shopcar);
                    break;//查看商品
                case "s":
                    sumGoods(shopcar);
                    break;//求和
                case "q":
                    break OUT;//退出操作
                default:
                    System.out.println("输入数据有误,请重输!");
                    break;
            }
        }
    }

    private static void updateGoods(Goods[] shopcar) {
        /*
        定义一个方法用来更新商品信息
        先根据商品的id号来查找到商品,判断商品是否在数组里面,如果不在,继续输入,如果在,进行下一步操作
         */
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你要修改商品的Id号");
        int id= sc.nextInt();
        for (int i = 0; i < shopcar.length; i++) {
            if(shopcar[i]!=null){
                if(id==shopcar[i].id){
                    //进行修改:修改数量或修改价格;
                    //分支语句,判断更新什么操作
                    System.out.println("请输入你要更新的操作(修改价格输入1;修改数量输入2):");
                    int commond=sc.nextInt();
                    switch (commond){
                        case 1:
                            System.out.println("请输入修改后的价格:");
                            shopcar[i].price=sc.nextDouble();
                            System.out.println("修改完成");
                            checkGoods(shopcar);
                            break;
                        case 2:
                            System.out.println("请输入修改后的数量");
                            shopcar[i].number=sc.nextInt();
                            System.out.println("修改完成");
                            checkGoods(shopcar);
                            break;
                        default:
                            System.out.println("你输入的数据有误!");
                            break;
                    }
                    break;
                }
            }
            else{
//                if(id==shopcar[i].id){
//                    //进行修改:修改数量或修改价格;
//                    //分支语句,判断更新什么操作
//                    System.out.println("请输入你要更新的操作(修改价格输入1;修改数量输入2):");
//                    int commond=sc.nextInt();
//                    switch (commond){
//                        case 1:
//                            System.out.println("请输入修改后的价格:");
//                            shopcar[i].price=sc.nextDouble();
//                            System.out.println("修改完成");
//                            checkGoods(shopcar);
//                            break;
//                        case 2:
//                        System.out.println("请输入修改后的数量");
//                        shopcar[i].number=sc.nextInt();
//                        System.out.println("修改完成");
//                        checkGoods(shopcar);
//                            break;
//                    }
//                }else{
                    System.out.println("没有该商品!");
                    break;//
            }
        }

    }

    private static void sumGoods(Goods[] shopcar) {
        //对所有的商品求  总金额=number*price
        //对数组进行遍历,求出所有含有商品对象的总金额
        double sum=0.0;
        for (int i = 0; i < shopcar.length; i++) {
            if(shopcar[i]==null){
                break;
            }else{
                sum+=(shopcar[i].number*shopcar[i].price);
            }
        }
        System.out.println("总金额为:"+sum);
    }

    private static void checkGoods(Goods[] shopcar) {
        //查看shopcar里所有的商品信息
        //遍历数组,将数组内容输出
        System.out.println("----------------查看-----------------");
        System.out.println("商品编号\t\t\t\t\t商品名称\t\t\t\t\t商品价格\t\t\t\t\t商品数量");
        for (int i = 0; i < shopcar.length; i++) {
            if(shopcar[i]==null){
                break;//如果遍历到了空值,就跳出循环
            }else{
                System.out.println(shopcar[i].id+"\t\t\t\t\t"+shopcar[i].name+"\t\t\t\t\t"+shopcar[i].price+"\t\t\t\t\t"+shopcar[i].number);
            }
        }
    }

    private static void addGoods(Goods[] shopcar) {
        //定义方法,将新的商品对象添加到数组对象里

        //1.键盘输入要添加的商品信息,将输入得到的信息封装成一个对象
        System.out.println("------------添加------------");
        Goods goods=new Goods();

        Scanner sc=new Scanner(System.in);
        System.out.println("请输入商品编号:");
        goods.id=sc.nextInt();
        System.out.println("请输入名称:");
        goods.name=sc.next();
        System.out.println("请输入价格:");
        goods.price=sc.nextDouble();
        System.out.println("请输入数量:");
        goods.number=sc.nextInt();

        //2.将创建的商品对象添加到数组里,注意数组里的元素是否为空
        //对数组进行遍历,找到暂时没有元素的地方存入
        for (int i = 0; i < shopcar.length; i++) {
            if(shopcar[i]==null){
                shopcar[i]=goods;
                System.out.println("您的商品"+goods.name+"已加入!");
                break;//注意要跳出循环,不能继续遍历,否则会一直往下存;
            }else if(shopcar[shopcar.length-1]!=null){
                System.out.println("购物车已满!");
            }
        }
    }
}

以上是利用基础的面向对象的知识设计的一个程序。得到的部分结果如下。

java 商品编码怎么生成 java定义商品类_面向对象编程

在学了封装知识之后,将上述代码进行了改进:

public class Goods {
    //属性(成员变量)

    //1.成员变量私有
    private int id;//商品编号;
    private String name;//商品名称;
    private double price;//商品价格;
    private int number;//数量

    //2.无参构造器
    public Goods() {
    }


    //3.getter 和setter

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    //方法
}
import java.util.Scanner;

public class shopcarsDemo {
    public static void main(String[] args) {
        /*        目标:创建一个类似于店铺的购物车的功能,可以实现往里边添加商品
        更新商品信息(比如更改数量或单价),查看已添加的商品,求所有商品总金额

        步骤:
        1.定义一个商品类,用于创建商品对象;
        2.定义一个数组对象,用来存放商品对象;
        3.定义各个方法实现各功能;
         */

        //1.定义类
        //2.定义数组对象存放200个商品
        Goods[] shopcar =new Goods[200];
        //3.实现各功能
        Scanner sc=new Scanner(System.in);
        OUT:
        while(true){
            System.out.println("请输入要执行的操作:");
            System.out.println("添加商品输入:a;更新商品信息输入:u;查看商品输入:c;求总金额输入:s;退出操作:q");
            String quire=sc.next();
            switch(quire) {
                case "a":
                    addGoods(shopcar);
                    break;//添加商品
                case "u":
                   updateGoods(shopcar);
                    break;//修改商品
                case "c":
                    checkGoods(shopcar);
                    break;//查看商品
                case "s":
                    sumGoods(shopcar);
                    break;//求和
                case "q":
                    break OUT;//退出操作
                default:
                    System.out.println("输入数据有误,请重输!");
                    break;
            }
        }
    }

    private static void updateGoods(Goods[] shopcar) {
        /*
        定义一个方法用来更新商品信息
        先根据商品的id号来查找到商品,判断商品是否在数组里面,如果不在,继续输入,如果在,进行下一步操作
         */
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你要修改商品的Id号");
        int id= sc.nextInt();
        for (int i = 0; i < shopcar.length; i++) {
            if(shopcar[i]!=null){
                if(id==shopcar[i].getId()){
                    //进行修改:修改数量或修改价格;
                    //分支语句,判断更新什么操作
                    System.out.println("请输入你要更新的操作(修改价格输入1;修改数量输入2):");
                    int commond=sc.nextInt();
                    switch (commond){
                        case 1:
                            System.out.println("请输入修改后的价格:");
                            shopcar[i].setPrice(sc.nextDouble());
                            System.out.println("修改完成");
                            checkGoods(shopcar);
                            break;
                        case 2:
                            System.out.println("请输入修改后的数量");
                            shopcar[i].setNumber(sc.nextInt());
                            System.out.println("修改完成");
                            checkGoods(shopcar);
                            break;
                        default:
                            System.out.println("你输入的数据有误!");
                            break;
                    }
                    break;
                }
            }
            else{
//                if(id==shopcar[i].id){
//                    //进行修改:修改数量或修改价格;
//                    //分支语句,判断更新什么操作
//                    System.out.println("请输入你要更新的操作(修改价格输入1;修改数量输入2):");
//                    int commond=sc.nextInt();
//                    switch (commond){
//                        case 1:
//                            System.out.println("请输入修改后的价格:");
//                            shopcar[i].price=sc.nextDouble();
//                            System.out.println("修改完成");
//                            checkGoods(shopcar);
//                            break;
//                        case 2:
//                        System.out.println("请输入修改后的数量");
//                        shopcar[i].number=sc.nextInt();
//                        System.out.println("修改完成");
//                        checkGoods(shopcar);
//                            break;
//                    }
//                }else{
                    System.out.println("没有该商品!");
                    break;//
            }
        }

    }

    private static void sumGoods(Goods[] shopcar) {
        //对所有的商品求  总金额=number*price
        //对数组进行遍历,求出所有含有商品对象的总金额
        double sum=0.0;
        for (int i = 0; i < shopcar.length; i++) {
            if(shopcar[i]==null){
                break;
            }else{
                sum+=(shopcar[i].getNumber()*shopcar[i].getPrice());
            }
        }
        System.out.println("总金额为:"+sum);
    }

    private static void checkGoods(Goods[] shopcar) {
        //查看shopcar里所有的商品信息
        //遍历数组,将数组内容输出
        System.out.println("----------------查看-----------------");
        System.out.println("商品编号\t\t\t\t\t商品名称\t\t\t\t\t商品价格\t\t\t\t\t商品数量");
        for (int i = 0; i < shopcar.length; i++) {
            if(shopcar[i]==null){
                break;//如果遍历到了空值,就跳出循环
            }else{
                System.out.println(shopcar[i].getId()+"\t\t\t\t\t"+shopcar[i].getName()+"\t\t\t\t\t"+shopcar[i].getPrice()+"\t\t\t\t\t"+shopcar[i].getNumber());
            }
        }
    }

    private static void addGoods(Goods[] shopcar) {
        //定义方法,将新的商品对象添加到数组对象里

        //1.键盘输入要添加的商品信息,将输入得到的信息封装成一个对象
        System.out.println("------------添加------------");
        Goods goods=new Goods();

        Scanner sc=new Scanner(System.in);
        System.out.println("请输入商品编号:");
        goods.setId(sc.nextInt());
        System.out.println("请输入名称:");
        goods.setName(sc.next());
        System.out.println("请输入价格:");
        goods.setPrice(sc.nextDouble());
        System.out.println("请输入数量:");
        goods.setNumber(sc.nextInt());

        //2.将创建的商品对象添加到数组里,注意数组里的元素是否为空
        //对数组进行遍历,找到暂时没有元素的地方存入
        for (int i = 0; i < shopcar.length; i++) {
            if(shopcar[i]==null){
                shopcar[i]=goods;
                System.out.println("您的商品"+goods.getName()+"已加入!");
                break;//注意要跳出循环,不能继续遍历,否则会一直往下存;
            }else if(shopcar[shopcar.length-1]!=null){
                System.out.println("购物车已满!");
            }
        }
    }
}

代码运行结果不变。

java 商品编码怎么生成 java定义商品类_面向对象编程_02