Java基础:
三种基本语句(选择,循环,顺序)
If 条件,switch条件,for循环,while循环中
Println输出 Scanner输入设备
结合于java基本类型的变量(有一些问题用函数)
数组(定长,相同数据类型)
注意:数组是引用对象,赋值赋值的是地址
索引从0开始,获取长度length属性
读/(修改) for循环,或者增强for,简易方法: Arrays.toString()
之前开发特点:思路一条线
缺点:项目主导 不利于团队开发
面向对象的设计
大程序:分模块(分工协作)
电商: 商品 订单 支付 用户 购物车(子功能)
面向对象的开发
做项目之前: 有抽象的描述(想法) ---à规划
后面开发 抽象的描述具体化---à对抽象的描述改进,功能实现
Java 引入概念: 类 对象
类: 对一些事物的抽象描述 ,统称,
对象,是实现抽象的具体化
Class 就是类
当我们把写好的class使用new 把class具体使用时,就是对象,把类转成对象的new过程,就是一个实例化的过程.
new ---à实例(对象实现类)
面向对象编程----à定义类,程序员实现类中的方法
有利于项目中管理,有利于分工协作开发,有利于项目中模块分离
编程:变量定义(变量往往代表值) 功能(算法)――>函数
变量:代表编程中某个值
函数:代表编程中某个功能(通过循环,条件,顺序写逻辑)
商品
维度:
ISBN编号:9787515222585书名:伤寒论 白话彩图典藏版作者:辛丽静
是否是套装:否出版社名称:中医古籍出版社
操作:
对购买和加入购物车所有的商品都有功能
淘宝搜药(出来的有药方面的书,有药)
药类属性:
型号:圣艾元云南本草痔立消品牌:圣艾元(医药)产地:湖北
颜色分类:5盒装【重度痔疮适用】 3盒装【较重痔疮适用】 2盒装【中度痔疮适用】 1只装【轻度痔疮适用】生产企业:湖北林源堂医药有限公司增值服务:正品保障
适用人群:内外痔疮/大便出血/肛周湿疹症状:内外痔疮/大便出血/肛周湿疹注册证号:鄂襄阳械备20190153号
选购热点:痔疮膏医疗器械产品名称:伤口护理软膏伤口敷料种类:其他
剂型:乳膏
相同的特征:
有相同的特征,也有不同的特征,都在商品模块,操作都是大同小异
在商品模块中,属性有共性的内容,又有个性的内容,操作是大同小异(秒杀)
采用面向对象的思维
把共性的内容定义成类,个性的东西相当于具体的实例
把商品用面向对象的方法来进行思考问题,商品模块中就有一个类是商品
Java建立类的时候,类名需要大写,对象的名字就小写,小写相当于实例化的类
与之前编程不一样的地方,在于之前编程有一个main函数,这里main是java的执行程序,所有程序都要有一个程序去做主管,其它模块只是程序执行过程中的调用.
淘宝是主程序,main函数只显示taobao首页就ok了.
其它模块程序都是用户交互(点击)进去,触发了某个函数,函数调用模块.
面向对象编程:(1)分模块,写模块,不要写main方法,只有变量和函数
(2)最终分析逻辑,哪个模块是主函数,模块和模块之间如何调用.(调用流程就是用户操作逻辑,把操作逻辑中共性的内容提取成类)
商品改成类
变量:
配送(地址,就是值) java分析类型 String
数量(1或2,就是值)java 分析类型 int
价格(值)有小数 java分析类型 double
函数:立即购买(用户点击立即购买),加入购物车(用户点击加入购物车)
注意: 这里没有main
这样,商品类的代码
public class Goods {
//把变量定义完成,peisong 配送的变量 num 数量的变量 price 价格的变量
String peison;
int num;
double price;
//有两个方法 buy是立即购买 addcar加入购物车
public static void buy(){
System.out.println("你购买了这个商品");
}
public static void addcar(){
System.out.println("你已经把商品加入购物车");
}
}
首页模块中模拟用户操作,实现触发商品
/*
首页模块
是最终执行的模块
*/
public class SouYe {
//这里有main函数
public static void main(String[] args) {
//用户点击商品,把这个商品具体化了,对商品具体化就是把商品的类实例化,实例化过程就是new
Goods goods = new Goods();
//具体化,把属性赋值,首页告诉商品名称,商品价格
goods.name="伤寒论张仲景正版原著中医书籍大全白话彩图典藏版";
goods.price=9.8;
//模拟用户点击,当前步骤省略了从商品列表页到详情页
//相当于在首页中选中这个商品,进入到商品具体页面,
//看到商品的其它属性,变量值直接赋值就可以
goods.peison="江苏南京至北京市昌平区";
goods.num=1;
//触发"立即购买",函数是要用()
goods.buy();
}
}
因为有主函数,主函数就是面向对象开发程序的入口,执行首页模块即可.
使用this时出现
报错原因:this不能用在静态中。写面向对象的方法时,把static的静态去掉。
注意:在写对象的方法函数时,不用加static.
面向对象的思想中,变量专业名称:属性 函数专业名称:方法
对于类,编写类中的属性和类中的方法
按照面向对象思维完成基本电商逻辑图
首页:整个程序的组织者,调度者,用户参与都是通过首页来参与的
功能:
首页模块: 功能:显示平台中的所有商品(商品列表:名称,价格)
商品模块:选择商品--à商品模块--à显示商品的详细 (名称,价格,配送,数量)
订单模块: 功能:订单号(属性) 商品的全部信息 方法: 去支付
支付:功能:帐户名称,帐户余额 方法:支付
购物车模块:订单号 商品全部信息的数组(定长,要求用户购买商品不能超过5个)
首页:显示所有商品,必须有main函数,main函数中是所有商品的显示,商品是具体的实例,原来商品是抽象的概念,在首页上知道内容,首页上是商品实例对象的显示.首页代码,new商品类的对象,让用户选择浏览哪一个商品.
商品模块:
显示商品详情因为变换页面,显示商品详情属性商品模块, 在商品模块多一个方法,显示商品详情,并且触发立即购买或者触发加入购物车.
用户选择立即购买,网站出现变换页面,触发订单模块.
生成订单是功能,生成订单后才能支付,还要计算用户的钱,有商品价格,商品的数量,商品的名称
这里的订单,需要继承goods的类,把类中所有内容取出来,用到订单中.继承后就是子类和父类,子类具备父类的所有属性和方法.继承的关键字是extends,
在订单中总价,最终生成定单就是把总价,商品名称,地址打包放在一起,形成订单编号,然后去支付。
凡是面向对象(属性,方法)
属性: 总价(商品模块没有总价,只有生成订单才会有总价,总价是一个值)
方法:生成订单功能(形成订单号,包含相关信息,实现去支付)
包含相关信息,通过继承extends Goods获取的
支付模块:
支付类(属性,方法)
支付帐户信息,名称,余额,
方法:支付逻辑(余额正确,支付,支付完把余额减掉)
在方法中对比用户余额和最终订单的总价格,对比需要订单里面的总价信息,获取订单中的信息,采用继承。
继承后,如果发了new,所有信息清空,解决。
总结:
面向对象编程注意点:
- 凡是调用模块中的方法,都是实例化对象 : new 类