java进阶——面向对象——第一章 类和对象

1、目标

掌握类和创建对象的关系

定义类

定义对象

定义和调用方法

2、开发方法

结构化开发

面向功能划分软件结构

自顶而下

最小的子系统是方法、

制约了软件的可维护性和可扩展性

面向对象开发

把软件系统看成各种对象的集合

系统结构较稳定

子系统相对独立

软件可重用性、可维护性和可扩展性强

3、对象

万物皆对象、

分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类

3.1 对象的特征

3.1.1 属性

属性——对象具有的各种特征

每个对象的每个属性都拥有特定值

3.1.2 方法

方法——对象执行的操作

对象:用来描述客观事物的一个实体,由一组属性和方法构成

3.1.3 对象的属性和方法

4、类和对象

类:具有相同属性和方法的一组对象的集合类是对象的抽象,对象是类的具体

4.1 类和对象的关系

类是抽象的概念,仅仅是模板。比如人

对象是一个你能够看得到,摸得着的具体实体。

5、java是面向对象的语言

所有java程序都以类class为组织单元

关键字class定义自定义的数据类型

如:

public class HelloWorld {
	public static void main(String[] args){
             System.out.println("Hello  World!!!");
	}
}

5.1 java类模板

类将显示世界中的概念模拟到计算机程序中

5.2 类图

使用类图描述类

用于分析和设计类

直观、容易理解

5.3 如何创建和使用对象

使用对象的步骤:

创建对象

类名 对象名 = new 类名();

School center = new School();

引用对象成员:以"."进行以下操作

引用类的属性:对象名.属性

引用类的方法:对象名.方法名()

center.name = "课工场";    //给name属性赋值
center.showCenter();	  //调用showCenter()方法

详细可看 练习一

5.4 类的方法

什么是方法:

方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果

类的方法定义类的某种行为(或功能)

如何定义一个方法:

public void show(){
       System.out.println("姓名:" + name + ",密码:" + password);
}

public   返回值类型  方法名()  {
           //这里编写方法的主体
}

(1)驼峰命名规则(2)有意义

方法的返回值:

两种情况:

如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该值的类型

返回值只能有一个

public class Student{
         String name = "张三";
         public String  getName(){
           //作用: 跳出方法、返回结果
                  return name;
          }
  }

如果方法没有返回值,返回值类型为void

5.5 方法调用

方法之间允许相互调用,不需要指导方法的具体实现,实现重用,提高效率

情况

举例

Student类的方法a( )调用Student类的方法b( ),直接调用


 

public void a( ) {

b( ); //调用b( )

}

Student类的方法a( )调用Teacher类的方法b( ),先创建类对象,然后使用“.”调用

public void a( ) {

Teacher t = new Teacher( );

t.b( ); //调用Teacher类的b()

}

观察之前编写过的方法,都是无参方法

练习

练习一 创建学员类和教员类

编写学员类,输出学员相关信息编写教员类,输出教员相关信息

main

public class Main {
    public static void main(String[] args) {
        Student stu = new Student();
        Teacher tea = new Teacher();

        System.out.println(stu.name);
        System.out.println("年龄:" + stu.age);
        System.out.println("就读于:" + stu.cla);
        System.out.println("爱好:" + stu.hobby);

        System.out.println(tea.name);
        System.out.println("专业:" + tea.professional);
        System.out.println("教授课程:" + tea.course);
        System.out.println("教龄:" + tea.tage);
    }
}

Student类

public class Student {
    //姓名
    String name = "张三";
    //年龄
    int age = 21;
    //班级
    String cla = "一班";
    //爱好
    String hobby = "音乐";

}

Teacher类

public class Teacher{
    //姓名
    String name = "王老师";
    //专业方向
    String professional = "计算机";
    //教授课程
    String course = "Java语言面向对象";
    //教龄
    int tage = 5;
}

练习二、一个景区根据游人的年龄收取不同价格的门票。请编写游人类,根据年龄段决定能够购买的门票价格并输出

main

import java.util.Scanner;

public class main2 {
    public static void main(String[] args) {
        human1 hu = new human1();
        Scanner sc = new Scanner(System.in);
//        ticket1 tic = new ticket1();

        System.out.println("输入姓名:");
        hu.name = sc.next();
        System.out.println("输入年龄:");
        hu.age = sc.nextInt();

        hu.ticket();
    }
}

human1

public class human1 {
    String name;
    int age;
    public void ticket(){
        if (age>0 && age<12){
            System.out.println(name + "年龄:" + age + "门票免费");
        }else {
            System.out.println(name + "年龄:" + age + "门票20元");
        }
    }
}

练习三、用户密码管理 模拟实现用户密码管理:输入旧的用户名和密码,如果正确,方有权限更新;从键盘获取新的密码,进行更新

main

package password;

import java.util.Scanner;

public class main {
    public static void main(String[] args) {
        user us = new user();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        us.name = sc.next();
        System.out.println("请输入密码:");
        us.newpass = sc.next();

        us.newPassword();

    }
}

user

package password;

import java.util.Scanner;

public class user {
    String name;
    String password = "123456";
    String newpass;

    public void newPassword(){
        Scanner sc = new Scanner(System.in);
        if (password.equals(newpass) && "admin".equals(name)){
            System.out.println("请输入新密码:");
            password = sc.next();
            System.out.println("密码修改成功,您的新密码是:" + password);
        }else {
            System.out.println("用户名或密码输入错误!!!");
        }
    }
}

作业

作业一

猜数字游戏:一个类A有两个成员变量v、num,v有一个初值100。定义一个方法guess,对A类的成员变量v,用num进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功

main

package homework1;

import java.util.Scanner;

public class main {
    public static void main(String[] args) {
        A a = new A();
        System.out.println("请输入一个数");
        a.guess();
    }
}

A

package homework1;

import java.util.Scanner;

public class A {
    int v = 100;
    int num;

    public void guess() {
        Scanner sc = new Scanner(System.in);

        while (true) {
            num = sc.nextInt();
            if (v > num) {
                System.out.println("小了,请继续输入");
            } else if (v < num) {
                System.out.println("大了,请继续输入");
            } else {
                System.out.println("猜测成功");
                break;
            }
        }
    }
}

作业二、

2.类的成员变量 请定义一个交通工具(Vehicle)的类其中有:

属性速度(speed)体积(size)等等 方法移动(move())设置速度(setSpeed(int speed))加速speedUp(),

减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象并通过方法给它初始化speed,

size的值并且通过打印出来。另外调用加速减速的方法对速度进行改变

main

package homework2;

public class main {
    public static void main(String[] args) {
        Vehicle ve = new Vehicle();
        ve.setSpeed(10);
        ve.setSize(5);
        System.out.println("速度:" + ve.speed + "体积:" + ve.size);
        ve.speedUp();
        System.out.println("速度:" + ve.speed + "体积:" + ve.size);
        ve.speedDown();
        System.out.println("速度:" + ve.speed + "体积:" + ve.size);
    }
}

Vehicle

package homework2;

public class Vehicle {


    double speed;
    double size;

    public void move(){

    }
    public double getSpeed() {
        return speed;
    }

    public void setSpeed(double speed) {
        this.speed = speed;
    }

    public double getSize() {
        return size;
    }

    public void setSize(double size) {
        this.size = size;
    }
    public void speedUp(){
        speed++;
    }
    public void speedDown(){
        speed--;
    }
}

作业三、

定义计算器类,成员属性num1和num2,定义行为加,减,乘,除进行计算,根据用户输入,返回计算结果。

Test

package homework3;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Cal c = new Cal();
        System.out.println("请输入两个数字");
        Scanner sc = new Scanner(System.in);
        c.num1 = sc.nextInt();
        c.num2 = sc.nextInt();
        c.add();
        c.sub();
        c.mul();
        c.div();
    }
}

Cal

package homework3;

public class Cal {
    double num1;
    double num2;

    public void add(){
        System.out.println(num1+num2);
    }
    public void sub(){
        System.out.println(num1-num2);
    }
    public void mul(){
        System.out.println(num1*num2);
    }
    public void div(){
        if (num2 == 0){
            System.out.println("分母不能为0");
        }else{
            System.out.println(num1/num2);
        }

    }
}

作业四、

4.定义Penguin企鹅类,属性health健康值,sex性别,love亲密度,创建两个企鹅并实现企鹅的自我介绍,并实现喂食,投递不同的食物增加不同的亲密度。

Test

package homework4;

import jdk.nashorn.internal.runtime.UnwarrantedOptimismException;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Penguin pa1 = new Penguin();
        Penguin pa2 = new Penguin();
        Scanner sc = new Scanner(System.in);
        int food;
        String name;
        pa1.name = "lwl";
        pa2.name = "lwe";
        pa1.health = 100;
        pa2.health = 100;
        pa1.sex = "雄";
        pa2.sex = "雌";
        System.out.println("企鹅自我介绍");
        while (true){
            pa1.introduce();
            pa2.introduce();
            System.out.println("请选择要投喂的企鹅");
            name = sc.next();

            System.out.println("请选择食物进行投喂  1、鱼   2、虾");
            food = sc.nextInt();
            if (pa1.name.equals(name)){
                pa1.touwei(food);
            }else {
                pa2.touwei(food);
            }
        }
    }
}

Penguin

package homework4;

public class Penguin {
    String name;
    int health;
    String sex;
    int love = 0;

    void introduce(){
        System.out.println("名字" + name + ",健康值" + health + ",性别" + sex + ",目前亲密度" + love);
    }
    void touwei(int food){
//        love = 0;
        if (food == 1){
            love += 2;
        } else{
            love += 4;
        }
        System.out.println("" + love);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值