今日课堂学习:面向对象
面向过程
:1,2,3步骤,----算法
面向对象
:Oriented Object
OOA(面向对象分析),OOD(面向对象设计),OOP(面向对象编程)
模拟现实社会,描述复杂的问题场景,让对象自行解决问题。
面向对象是从大处着眼,面向过程是从细节处理,两者相辅相成。
概念
:
对象
:万事万物 皆对象。看得见摸得着的一个具体存在。
静态的 特征:姓名,性别,身高,电话号码
动态的特征:行为,动作,功能等。上课,吃饭,睡觉
类
:具有相同的特征的对象的集合。
类和对象的关系
:
类是一个概念,是抽象,对象一个具体的对象,
类是集合,对象是其中的一个个体。
类是数据类型,对象是实例。
学生--张荣 共享单车--一辆青桔 牛--牛头(X)
面向对象的开发步骤:
1、先把对象归类,抽象出类
属性:数据类型 变量名; String name;
方法:访问控制符 返回值类型 方法名(参数列表){
方法体
}
//访问控制符 public
//返回值类型 void
//方法名 camel法,见名之意
//参数列表 可以省略
//方法体 具体的执行过程
2、由类来创建对象
类名 对象名=new 类名();
3、使用.操作符来访问对象的属性和方法
对象名.属性
全局变量
局部变量
默认值
有。int---0 String-null double--0.0 boolean -false
无
作用域
整个类,所有的方法
定义的方法内,或就近的大括号
生命周期
对象的创建---对象的销毁
方法的开始--方法的结束
对象名.方法()
如果要特指全局变量,需要使用this关键字
this:当前对象,谁调用这个方法,this就指代谁
1.3 方法
抽取原则:一个行为/动作/功能,抽取成一个方法
语法:
访问控制符 返回值类型 方法名(参数列表){
方法体
}
返回值类型
:没有返回值:void
有返回值 :int、String 等
方法体最后一句要添加return 数据类型的值;
方法的调用
:
1、方法只有调用才会执行
2、方法调用的过程,是压栈和弹栈的过程,就是执行方法体的过程
调用方法
:
不同类中,需要初始化对象,通过对象名.方法名();
同一个类中,可以只写方法名();
今日课堂作业:
/**1.定义狗类
属性:昵称,品种,健康值(int)
方法:吃,玩飞盘
定义测试类 实例化对象,调用方法
*/
public class Dog {
String name;
String variety;//品种
int healthIndex;
public void eat() {
System.out.println("吃");
}
public void play() {
System.out.println("玩飞盘");
}
}
public class TestDog {
public static void main(String[] args) {
Dog a=new Dog();
a.name="点点";
a.variety="串串";
a.healthIndex=10;
System.out.println("小狗名字:"+a.name+"\n品种:"+a.variety+"\n健康值:"+a.healthIndex);
a.eat();
a.play();
}
}
代码运行如下:
/**2.定义矩形类:
属性:宽 、高
方法:计算周长,面积(要求把结果返回)
定义测试类:实例化两个矩形对象,并求出周长和面积。
*/
public class Rectangle {
int wide;
int hight;
public int perimeter() {
int perimeter=(wide+hight)*2;
System.out.println("周长:"+perimeter);
return perimeter;
}
public int acreage() {
int acreage=wide*hight;
System.out.println("面积:"+acreage);
return acreage;
}
}
public class TestRec {
public static void main(String[] args) {
Rectangle a=new Rectangle();
a.wide=8;
a.hight=10;
a.perimeter();
a.acreage();
}
}
代码运行如下:
周长:36
面积:80
3.实现级联菜单
import java.util.Scanner;
public class Menu {
Scanner scanner=new Scanner(System.in);
public void stairMenu() {
boolean flag;//false输入错误,true输入正确
do {
flag=true;
System.out.println("********欢迎进入银行系统*********");
System.out.println("\t1.注册");
System.out.println("\t2.登录");
System.out.println("\t3.退出");
System.out.println("**********************");
System.out.println("请选择");
int num=scanner.nextInt();
switch(num){
case 1:
System.out.println("注册");
break;
case 2:
System.out.println("登录");
secondMenu();
break;
case 3:
System.out.println("谢谢使用");
break;
default:
flag=false;
System.out.println("输入错误,请重新输入");
break;
}
}while(!flag);
}
public void secondMenu() {
System.out.println("**********************");
System.out.println("\t1.查询余额");
System.out.println("\t2.存款");
System.out.println("\t3.取款");
System.out.println("**********************");
System.out.println("请选择(输入0,返回上一级菜单)");
int num1=scanner.nextInt();
switch(num1){
case 0:
stairMenu();
break;
case 1:
System.out.println("查询余额");
break;
case 2:
System.out.println("存款");
break;
case 3:
System.out.println("取款");
break;
default:
break;
}
}
}
public class TestMenu {
public static void main(String[] args) {
Menu a=new Menu();
a.stairMenu();
}
}
代码运行如下:
//4、定义一个计算器,实现两个数的加减乘除。
public class Counter {
double num1;
double num2;
public double sum() {
double sum=num1+num2;
System.out.println("求和:\t"+sum);
return sum;
}
public double minus() {
double minus=num1-num2;
System.out.println("求减:\t"+minus);
return minus;
}
public double multiplication() {
double multiplication=num1*num2;
System.out.println("求乘:\t"+multiplication);
return multiplication;
}
public double divide() {
double divide=num1/num2;
System.out.println("求除:\t"+divide);
return divide;
}
}
public class TestCou {
public static void main(String[] args) {
Counter a=new Counter();
a.num1=12;
a.num2=10;
a.sum();
a.minus();
a.multiplication();
a.divide();
}
}
代码运行如下:
求和: 22.0
求减: 2.0
求乘: 120.0
求除: 1.2
/**5.账户类:
属性:用户名,密码
方法:登录验证,要求返回验证结果
正确的账户信息是admin/123456
*/
public class Login {
String name;
String code;
String name1="admin";
String code1="123456";
public boolean check() {
boolean flag=false;
if(name.equals(name1)&&code.equals(code1) ){
flag=true;
}else {
System.out.println("登录失败,请重新登录");
}
return flag;
}
}
import java.util.Scanner;
public class TestLogin {
public static void main(String[] args) {
Login a=new Login();
Scanner scanner=new Scanner(System.in);
System.out.println("请输入用户名");
a.name=scanner.next();
System.out.println("请输入密码");
a.code=scanner.next();
a.check();
}
}
代码运行如下:
总结如下:
创建对象:
类名(数据类型) 对象名=new 类名();
对象名.方法()
public void 没有返回值;
public 数据类型()有返回值,需要return数据类型结束;