第六天面向对象

5 篇文章 0 订阅
4 篇文章 0 订阅

第六天:面向对象入门


  1. 基本概念

    • 一切具有相同属性的物体都可以作为一个类,每个属性的作用或者用法就是这个类的传递方式。
  2. 定义类

    • 如:手机类
package com.lovoinfo;

/**
 * 手机
 * @author jackfrued
 *
 */
public class MobilePhone {
    String brand;   // 品牌
    double screenSize;  // 屏幕尺寸
    boolean smart;  // 是不是智能机

    /**
     * 打电话
     * @param telNumber 呼叫的号码
     */
    public void call(String telNumber) {
        System.out.println("正在呼叫" + telNumber);
    }

    /**
     * 发短信
     * @param telNumber 收信人
     * @param message 消息的内容
     */
    public void sendMsg(String telNumber, String message) {
        System.out.println("向" + telNumber + "发送...");
        System.out.println(message);
    }
}
  • 学生类
package com.lovoinfo;

/**
 * 学生
 * @author jackfrued
 *
 */
public class Student {
    private String name;    // 姓名
    private int age;        // 年龄

    /**
     * 构造器
     * @param name 姓名
     * @param age 年龄
     */
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 吃饭
     * @param food 吃的东西
     */
    public void eat(String food) {
        System.out.println(name + "正在吃" + food);
    }

    /**
     * 睡觉
     */
    public void sleep() {
        System.out.println(name + "正在睡觉.");
    }

    /**
     * 学习
     * @param courseName 课程的名称
     */
    public void study(String courseName) {
        System.out.println(name + "正在学习" + courseName);
    }

    @Override
    public String toString() {
        return name + " - " + age;
    }

}

3 .创建和使用对象

  • 使用手机类
package com.lovoinfo;


public class Test01 {

    public static void main(String[] args) {
        MobilePhone phone = new MobilePhone();
        phone.call("13812345678");
        phone.sendMsg("13900998877", "晚上一起吃饭吧?");
    }
}
  • 使用学生类
package com.lovoinfo;

public class Test02 {

    public static void main(String[] args) {
        Student stu = new Student("王大锤", 20);
        stu.eat("牛肉面");
        stu.sleep();
        stu.study("Java程序设计");

        System.out.println(stu);
    }
}

实例1:时钟

package com.lovoinfo;

import java.util.Calendar;

/**
 * 时钟
 * @author jackfrued
 *
 */
public class Clock {

    private int hour;       // 时
    private int minute;     // 分
    private int second;     // 秒

    /**
     * 构造器
     */
    public Clock() {
        Calendar cal = Calendar.getInstance();
        hour = cal.get(Calendar.HOUR_OF_DAY);
        minute = cal.get(Calendar.MINUTE);
        second = cal.get(Calendar.SECOND);
    }

    /**
     * 构造器
     * @param hour 时
     * @param minute 分
     * @param second 秒
     */
    public Clock(int hour, int minute, int second) {
        this.hour = hour;
        this.minute = minute;
        this.second = second;
    }

    /**
     * 走字
     */
    public void go() {
        second += 1;
        if(second == 60) {
            second = 0;
            minute += 1;
            if(minute == 60) {
                minute = 0;
                hour += 1;
                if(hour == 24) {
                    hour = 0;
                }
            }
        }
    }

    /**
     * 显示时间
     * @return 返回当前时间
     */
    public String display() {
        String str = "";
        if(hour < 10) {
            str += "0";
        }
        str += hour + ":";
        if(minute < 10) {
            str += "0";
        }
        str += minute + ":";
        if(second < 10) {
            str += "0";
        }
        str += second;
        return str;
    }

    /**
     * 调整小时
     * @param up true表示上调, false表示下调
     */
    public void setHour(boolean up) {
        if(up) {
            hour = (hour + 1) % 24;
        }
        else {
            hour -= 1;
            if(hour == -1) {
                hour = 23;
            }
        }
    }

    /**
     * 调整分钟
     * @param up true表示上调, false表示下调
     */
    public void setMinute(boolean up) {
        if(up) {
            minute = (minute + 1) % 60;
        }
        else {
            minute -= 1;
            if(minute == -1) {
                minute = 59;
            }
        }
    }

    /**
     * 调整秒
     * @param up true表示上调, false表示下调
     */
    public void setSecond(boolean up) {
        if(up) {
            second = (second + 1) % 60;
        }
        else {
            second -= 1;
            if(second == -1) {
                second = 59;
            }
        }
    }
}
  • 使用时钟类
package com.lovoinfo;

import javax.swing.JOptionPane;

public class Test03 {

    public static void main(String[] args) throws InterruptedException {
        Clock c = new Clock();  // 用构造器创建时钟对象
        JOptionPane.showMessageDialog(null, c.display());
        System.exit(0); // 关闭JVM
    }
}

或者

package com.lovoinfo;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;
import javax.swing.UIManager;

public class ClockFrame extends JFrame {
    private static final long serialVersionUID = -329506225578854635L;

    private JLabel timeLabel = new JLabel("", JLabel.CENTER);

    private Clock c = new Clock();

    public ClockFrame() {
        this.setTitle("时钟");
        this.setSize(300, 200);
        this.setResizable(false);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        timeLabel.setText(c.display());
        c.go();
        timeLabel.setFont(new Font("Consolas", Font.PLAIN, 64));
        this.add(timeLabel);


        Timer timer = new Timer(1000, new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                timeLabel.setText(c.display());
                c.go();
            }
        });

        timer.start();
    }

    public static void main(String[] args) throws Throwable {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        new ClockFrame().setVisible(true);
    }
}

作业1:游泳池

package com.lovoinfo;


/**
 * 游泳池
 * @author Legendary
 *
 */
public class Natatorium {
    private static double r;//圆形游泳池半径
    /**
     * 计算出小圆面积
     * @param r为半径
     * @return 返回面积值
     */

    public Natatorium(double r){
        this.r = r;
    }
    public double smCircul(){//小圆面积
        double area1 = r*r*Math.PI;
        return area1;
    }

    /**
     * 计算出大圆面积
     * @param r为半径
     * @return 返回面积值
     */
    public double bmCircul(){//大圆面积

        double area2 = (r+3)*(r+3)*Math.PI;

        return area2;   
    }

    /**
     * 计算出小圆周长
     * @param r为半径
     * @return 返回周长
     */
    public double smQirth(){
        double q1 = 2*r*Math.PI;
        return q1;
    }

    /**
     * 计算出大圆周长
     * @param r+3为半径
     * @return 返回周长
     */
    public double bmQirth(){
        double q2 = 2*(r+3)*Math.PI;
        return q2;
    }

    /**
     * 计算出环面积
     * @param bm以r+3为半径,sm以r为半径
     * @return 返回环形面积
     */
    public double ringCircul() {

        double rc = bmCircul() - smCircul(); 
        return rc;
    }
}

调用类

package com.lovoinfo;

import java.util.Scanner;

public class Test4 {

    public static void main(String[] args) {

        System.out.print("游泳池的半径是(单位为m):");
        Scanner sc = new Scanner(System.in);
        double r = sc.nextDouble();
        Natatorium m = new Natatorium(r);
        double cost = 18*m.ringCircul();
        cost += 5*m.bmQirth();
        System.out.printf("地板和围墙总共需要花费:%.2f元",cost);
        sc.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值