面向对象的复习:
把面向对象理解成:“找东西”更加易懂,面向就是“找”或者“取”,对象 就是需要用到的“东西”。而面向对象编程就是“找东西来编程”。
在现实生活中,我们想在手机上 上网,会去找WLAN或者打开移动数据,想编程会打开需要用到的开发工具,就像编程时写的 输入、输出 功能,就需要我们去找到Scanner、System方法来实现。这就是面向对象的一个体现,所以面向对象时时刻刻都在出现,与生活十分贴切,这也体现出JAVA这门程序语言的实用性。
我们在自己编程的时候,使用的都是JAVA自带一些方法,或者类,那么当遇到使用这些东西并不能解决问题的时候,就需要我们编写一个“工具”来帮助自己,而这个“工具”就是“对象”,也就是学习面向对象的目的,为的就是让自己可以更加轻松的运用这些“对象”,解决问题。
设计对象并使用:
类:是共同特征的描述,对象:真实存在的具体实例
类的设计:
public class 类名{
成员变量(代表属性,用名词)
成员方法(代表方法,用动词)
}
在创建类时,要满足以大写字母开头,全英文,有意义,满足驼峰命名,不能用关键字,符合标识符法则。
对象的创建:
类名 对象名 = new 类名();
访问对象的方法:
对象.成员变量;
对象.成员方法(...) ;
一个Java文件可以有多个类,但是以public修饰的只有一个,这个类的类名就是文件名
成员变量的创建格式:修饰符 数据类型 变量名 = 初始化值(可以不用初始化值,数据类型有默认值)
内存机制:
内存分为:堆内存、栈内存、方法区
对象放在堆内存,对象名中储存的是堆内存中的地址
成员变量放在对象中,存在与堆内存中。
稍许困难 暂浅理解
通过浅浅接触对面向对象的理解,完成了一个"购物车"的例题,大致内容是:以数组为"购物车",存放商品对象,实现:添加商品到购物车 、查询购物车商品展示 、修改商品购买数量 、结算购买金额四个功能。以下是代码:
这个是“购物车功能实现”类的代码
package example2;
import java.util.Scanner;
public class ShoppingCart {
Scanner sc = new Scanner(System.in);
//创建一个购物车,用数组表示
Goods[] shoppingCart = new Goods[100];
/**
* 主界面,对应功能展示
* */
public void MainInterface(){
//先添加两个商品
shoppingCart[0] = new Goods(1,"小米10s",3199.00,1);
shoppingCart[1] = new Goods(2,"3080ti",9299.00,1);
while (true) {
System.out.println("选择对应功能编号进行操作:");
System.out.println("1、添加商品到购物车");
System.out.println("2、查询购物车商品展示");
System.out.println("3、修改商品购买数量");
System.out.println("4、结算购买金额");
String instruction = sc.next();
switch (instruction){
case "1" :
Function1();
break;
case "2" :
Function2();
break;
case "3" :
Function3();
break;
case "4" :
Function4();
break;
default:
System.out.println("请输入正确的功能编号!");
}
}
}
/**
* 添加商品到购物车功能
* */
public void Function1(){
System.out.println("请输入商品编号(不能重复):");
int id = sc.nextInt();
System.out.println("请输入商品名称:");
String name = sc.next();
System.out.println("请输入商品价格:");
double price = sc.nextDouble();
System.out.println("请输入购买数量:");
int buyNumber = sc.nextInt();
//创建一个商品对象,封装对应信息
Goods goods = new Goods();
goods.id = id;
goods.name = name;
goods.price = price;
goods.buyNumber = buyNumber;
//将商品信息存入购物车
for (int i = 0; i < shoppingCart.length; i++) {
if (shoppingCart[i] == null){
shoppingCart[i] = goods;
System.out.println("添加成功!");
break;
}
}
}
/**
* 查询购物车商品展示功能
* */
public void Function2(){
System.out.println("商品编号"+"\t"+"商品名称"+"\t\t"+"商品价格"+"\t\t"+"购买数量");
for (int i = 0; i < shoppingCart.length; i++) {
Goods goods = shoppingCart[i];
//对数组中空值的判断,输出到空值结束
if (goods != null){
System.out.println(goods.id+"\t\t"+goods.name+"\t\t"+goods.price+
"\t\t"+goods.buyNumber+"\n");
}else {
break;
}
}
}
/**
* 修改商品购买数量功能
* */
public void Function3(){
while (true) {
System.out.println("请输入您需要修改的商品ID");
int id = sc.nextInt();
Goods goods = selectId(id);
if (goods != null){
System.out.println("请输入"+goods.name+"新的购买数量:");
goods.buyNumber = sc.nextInt();
System.out.println("修改成功!");
Function3();
}else {
System.out.println("抱歉,未找到该商品!");
}
}
}
/**
* 结算购买金额功能
* */
public void Function4(){
int t = 0;//用于记录商品件数
double sum = 0;
for (int i = 0; i < shoppingCart.length; i++) {
if (shoppingCart[i] != null){
sum += shoppingCart[i].price;
t++;
}
}
System.out.println("==============结算完成============");
Function2();
System.out.println("您的购物车共"+t+"件商品,总价为:"+sum+"元\n");
}
/**
* '查询ID是否存在'功能
* */
private Goods selectId(int id) {
for (int i = 0; i < shoppingCart.length; i++) {
Goods goods = shoppingCart[i];
//找到id的情况
if (goods != null){
if (goods.id == id){
return goods;
}
}else {
return null;//找完所有已存在的商品未找到的情况
}
}
return null;//找完整个数组未找到的情况
}
public static void main(String[] args) {
new ShoppingCart().MainInterface();
}
}
这个是商品类的代码
package example2;
public class Goods {
int id ; //编号
String name ; //商品名称
double price ; //商品价格
int buyNumber ; //购买数量
//有参构造
public Goods(int id, String name, double price, int buyNumber) {
this.id = id;
this.name = name;
this.price = price;
this.buyNumber = buyNumber;
}
//无参构造
public Goods() {
}
}
面向对象(上)的复习先完成了。
感谢“黑马程序员”提供的网络学习资源,和学校刘老师的指导。