文章目录
- Java面向对象编程:
- 类的基本概念
- 定义类
- 对象的创建与使用
- 程序设计训练
Java面向对象编程:
类的基本概念
类和对象是面向对象程序设计方法中最核心的概念。
在Java中,必须先定义类,才能获得对象。
类的概念是为了让程序设计语言更好的描述事物。类是对某一类事物的描述,是抽象的定义;对象是实际存在的属于该类事物的具体个体,也称为实例。对象表示现实世界中可以明确标识的一个实体,比如说,一辆小汽车,一个学生,一本书等等。
面向对象编程就是使用对象进行程序设计。
一般来说,类是由数据成员与函数成员封装而成的,其中数据成员表示类的属性,函数成员表示类的行为,由此,类描述了对象的属性和对象的行为。Java语言一般将封装于类内的函数称为“方法”。
注意:Java语言将数据成员称为域变量、属性、成员变量;经函数成员称为成员方法,简称为方法。
每个对象都有自己的状态和行为。
- 对象的状态
又称为对象的属性,由具有当前值的数据域来表示,比如学生具有数据域name和sex,他们表示学生的属性。- 对象的行为
由方法定义。调用对象的一个方法就是要求对象完成一个动作。
定义类
由于类是将数据和方法封装在一起的一种数据结构,其中数据表示类的属性,方法表示类的行为,所以定义类其实就是定义类的属性与方法。
用户定义定义一个类实际就是定义一个新的数据类型,在使用类前必须先进行定义,然后才能利用定义的类来声明相应的变量,并创建对象。
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("购物车已满!");
}
}
}
}
以上是利用基础的面向对象的知识设计的一个程序。得到的部分结果如下。
在学了封装知识之后,将上述代码进行了改进:
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("购物车已满!");
}
}
}
}
代码运行结果不变。