一、面向对象的基本概念
1.1 面向过程
传统的编程主要是面向过程的:程序是按照顺序流进行运行的。
实现两个英雄进行相互攻击:
public static void main(String[] args) {
// 1.定义一个英雄虞姬
String heroName = "虞姬";
int blood = 100;
int attack = 4;
// 2.定义另外一个英雄甄姬
String heroName2 = "甄姬";
int blood2 = 200;;
int attack2 = 3;
// 相互攻击
battle(heroName,blood,attack,heroName2,blood2,attack2);
}
这样子来分析实现两者的battle的代码太过于冗长,两个英雄还好,多的话就很复杂了。每个英雄都要定义属性,而且在使用过程中分不清谁是谁的属性。
1.2 面向对象
它以对象为基本单位,通过封装、继承和多态等机制,将数据和操作数据的方法组织在一起,以解决软件开发中的复杂性和可维护性的问题。提供类(class)和对象(object)的概念,用于更好的描述实际生活中的物体。
实现两个英雄相互攻击:
public class Hero {
//定义英雄的属性
String name = "虞姬"; // 姓名
int blood = 100; // 血量
int attack = 4; // 攻击力
//定义英雄的方法
public void attack(){
System.out.println(this.name+"发动了攻击");
System.out.println("对xx造成了"+attack+"点伤害");
}
}
二、面向对象编程的基本使用(银行账户为例)
2.1 为对应的物体创建类(属性和方法)
public class Account {
String id; // 账户ID
String name; // 用户名字
double balance; // 余额
double annualInterestRate; // 年利率
/* 取款方法 */
public void withdraw(double money){
if(this.balance<money){
System.out.println("对不起,您的余额不足,取钱失败!");
throw new RuntimeException(this.name+" has a account: id is "+
this.id+", annualInterestRate is " + this.annualInterestRate*100
+"%, balance is "+ this.balance + "元");
}else{
this.balance -= money;
System.out.println("您已成功取出:"+money+"元");
}
}
/* 存款方法 */
public void deposit(double money){
this.balance += money;
System.out.println("您已成功存入:"+money+"元");
}
}
2.2 根据类创建一个对象
类是对某个物体的抽象概念,对象是物体的真实存在(某类物体会有一个统一的类定义,会有通过new来创建各种不同的对象)。
public class AccountTest {
public static void main(String[] args) {
// 初始化customer对象
Account customer = new Account();
customer.id = "1000";
customer.name = "Jame Smith";
customer.balance = 2000;
customer.annualInterestRate = 0.0123;
2.3 调用方法
// 对customer进行操作
// 1.先存100元
customer.deposit(100);
// 2.再取出960元
customer.withdraw(960);
// 3.再取出2000元
customer.withdraw(2000);
}
}
2.4 参数传递的时候,也可以使用自定义类作为参数传递的类型
// 显示账户基本信息
public void showDetail(Account account){
System.out.println("账户ID:"+account.id);
System.out.println("账户名称:"+account.name);
System.out.println("账户余额:"+account.balance);
System.out.println("账户的年利率:"+account.annualInterestRate);
}
三、面向对象三个过程
3.1 面向对象分析(OOA)
Object Oriented Analysis :
① 对客观存在的事物建立理论模型
② 对业务的需求进行分析
3.2 面向对象设计(OOD)
Object Oriented Design:
① 这个过程需要针对需求进行分析,概括事物的共性特点
② 提炼出对应的类,设计出需要的属性和方法。
3.3 面向对象编程(OOP)
Object Oriented Programming:
OOP即把设计好的系统通过代码编程实现
四、全局变量和局部变量
3.1 全局变量
在类中定义变量,称为全局变量,可以在类的任意一个方法中使用。
3.2 局部变量
在方法中定义的变量,称为局部变量,只能在当前的方法中使用。
当全局变量和局部变量同时出现时,就会出现变量作用域的问题。在这种情况下,局部变量将覆盖全局变量,即优先使用局部变量。
使用全局变量可能会导致代码可读性降低和出现不良后果,因此应尽可能避免过度使用全局变量,尽量使用局部变量,避免变量污染、安全问题等。
在编写程序时,应尽量避免出现同名的全局变量和局部变量,以避免变量的作用范围混乱和代码可读性降低的问题。
以上的内容,如有不正确的地方,请各位大佬指出,我会加以改正!