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);
}
}