面向对象编程基础

一、面向对象的基本概念

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 局部变量

        在方法中定义的变量,称为局部变量,只能在当前的方法中使用。

        当全局变量和局部变量同时出现时,就会出现变量作用域的问题。在这种情况下,局部变量将覆盖全局变量,即优先使用局部变量。

        使用全局变量可能会导致代码可读性降低和出现不良后果,因此应尽可能避免过度使用全局变量,尽量使用局部变量,避免变量污染、安全问题等。

        在编写程序时,应尽量避免出现同名的全局变量和局部变量,以避免变量的作用范围混乱和代码可读性降低的问题。

  以上的内容,如有不正确的地方,请各位大佬指出,我会加以改正!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tina@Qian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值