一、开发方法
1. 结构化开发:
注重过程,自上而下的开发流程。
- 面向功能划分软件结构;
- 自上而下的开发流程;
- 最小的是子系统是方法
- 制约了软件的可维护性和可扩展性
优点:流程明确
缺点:不易程序的扩展或者是重用
2. 面向对象开发:
要找一个对象,不需要关心做的整个过程,只关注结果。
- 把软件系统堪称各种对象的集合
- 系统结构稳定
- 子系统相对独立
- 软件可重用性、可维护性和可扩展性强
二、对象
1、对象的定义
对象是客观存在的实体,包括自然景观、动植物、人、物品等(万物皆对象)。
对象具有两类特征。一类是描述对象的客观属性,一类是描述对象的动态行为的。
(1)对象的特征-属性
- 属性是对象具有的各种特征。
- 每个对象的每个属性有特定的值。
(2)对象的特征-方法
- 方法是对象执行的操作。
- 对象是用来描述客观事物的一个实体,由一组属性和方法组成。
三、类
类是认识的世界,改造客观世界的过程中,把具有相同特征的一类对象进行了分类划分产生的。
- 动物:小猫、小狗、鱼
- 植物:花、草、树木
- 景观:双子塔、峨眉山、青城山
Java中的类,是提取的一批对象身上所具有的共同属性与方法,抽象总结而来的。
例子:
/**
* user:liaoxinyue
**/
//Student是自定义类
public class Student {
// 静态特征:属性
int stuNum;//学号
String name;//姓名
int age;//年龄
String sex;//性别
// 动态特征:方法
// public 访问修饰符 全局
// void:方法的返回值得数据类型
// 学习的方法
public void study ( ) {
System.out.println ( name + "在学习" );
}
public void homework ( ) {
System.out.println ( name + "交作业" );
}
}
四、类与对象的关系
- 对象是一个具体的看得见摸得着的实体。
- 类是一个抽象的概念,是有一堆具有共同特征的对象身上抽取一些共同特征定义而来的。
- 类是对象的抽象,对象是类的实例。
- 类是对象的模板,对象是类的实例。
例子:
代码如下:
自定义一个学生类
/**
* user:liaoxinyue
**/
public class Student {
// 静态特征:属性
int stuNum;//学号
String name;//姓名
int age;//年龄
String sex;//性别
// 动态特征:方法
// public 访问修饰符 全局
// void:方法的返回值得数据类型
// 学习的方法
public void study ( ) {
System.out.println ( name + "在学习" );
}
public void homework ( ) {
System.out.println ( name + "交作业" );
}
// 静态方法:方法的定义
public void speak ( ) {
System.out.println ( "大家好,我是" + name + ",我的学号是" + stuNum + ",我是" + sex + "生,我的年龄是" + age );
}
}
实例化一个学生对象:
/**
* user:liaoxinyue
**/
public class Manager {
public static void main ( String[] args ) {
// 实例化一个对象,创建一个学生对象
// Student是学生类名,student是自定义的对象名称
Student student = new Student ( );
// 给对象的属性赋值
student.name = "lxy";
student.sex = "女";
student.stuNum = 202340198;
student.age = 22;
// 方法的调用
student.speak ( );
}
}
运行结果如下:
五、类的方法
类的方法定义为类的某种行为(或功能)。方法是一种用于执行特定任务或操作的代码块,就是一个功能,它可以接收数据进行处理,并返回一个处理后的结果。
- 返回值:方法中有返回值的情况,没有返回值的情况。
- 有返回值的:类型可以定义为基本数据类型,引用数据类型(自定义的数据类型)。一定使用return关键字来返回!
- 返回的类型需要和方法的类型保持一致!
- 无返回值的:使用void来表示。
- 没有返回类型的方法不能使用一个变量来接收!
方法的完整定义格式:
修饰符 返回值类型 方法名(形参列表){
方法体代码(需要执行的功能代码)
return 返回值;
}
六、方法的调用
分为两种情况:
1. 在同类中方法的调用
方法必须被调用才能执行,调用格式:方法名称(数据)
在同类的方法中调用其他方法,直接在方法中写需要调用的方法名字+小括号即可;
优点:
- 提高了代码的复用性,提高了开发效率
- Java项目几乎就是一个一个方法组成的,每一个方法是一个功能,这样能够使程序的逻辑更清晰(可读性、可维护性也更好)
例子1:
package Method;
/**
* user:liaoxinyue
**/
public class MethodDemo1 {
public static void main ( String[] args ) {
// 目标:掌握方法的完整格式
// 调用方法的格式:方法名称(数据)
int max=getMax ( 1,3 );
System.out.println ("较大值为:"+max );
}
public static int getMax ( int a , int b ) {
int max = a > b ? a : b;
return max;
}
}
运行结果:
例子2:
package Animal;
/**
* user:liaoxinyue
**/
public class Dog {
String name;//名字
String strain;//品种
String color;//品种
public void eat ( ) {
System.out.println ( "狗狗在吃东西" );
sleep ( );
int re=sum ();
System.out.println ("结果为:"+re );
}
public void sleep ( ) {
System.out.println ( "狗狗在睡觉" );
}
public int sum(){
return 10+20;
}
}
运行结果:
2. 不同类中的调用
方法的其他形式:需要按照方法解决的实际业务需求,来设计合理的方法形式解决问题。
必须实例化对象操作后,然后通过对象.方法名()进行调用。
例子1:
package Method;
/**
* user:liaoxinyue
**/
public class MethodDemo2 {
public static void main ( String[] args ) {
// 目标:理解方法的其他定义形式
printHelloWorld ();
}
// 方法如果不需要接收数据:形参列表可以不写
// 方法如果不需要返回数据,返回类型必须声明为void
// 成为:无参数无返回值的方法
public static void printHelloWorld(){
System.out.println ("Hello world!" );
System.out.println ("Hello world!" );
System.out.println ("Hello world!" );
}
}
运行结果如下:
注意事项:
- 如果方法不需要返回数据,返回类型必须声明成void(无返回类型声明),此时方法内部不可以使用return返回数据。
- 方法如果不需要接收数据,则不需要定义形参,且调用方法时也不可以传数据给方法了。
例子2:
package Animal;
/**
* user:liaoxinyue
**/
public class DogDemo1 {
public static void main ( String[] args ) {
Dog dog = new Dog ( );
dog.eat ( );
dog.sleep ( );
int sum=dog.sum ();
System.out.println (sum );
}
}
3、小练习
需求:模拟实现用户密码管理:输入旧的用户名和密码,如果正确,方有权限更新;从键盘获取新的密码,进行更新。
代码如下:
import java.util.*;
/**
* user:liaoxinyue
**/
public class User {
// 用户类
String name;//用户名
String password;//密码
public void Login(){
System.out.println ("请输入用户名" );
Scanner input=new Scanner ( System.in );
String userName=input.next ();
System.out.println ("请输入你的密码" );
String userPassword=input.next ();
if ( name.equals ( userName )&& password.equals ( userPassword ) ){
System.out.println ("请输入新的密码" );
String New_userPassword= input.next ( );
password=New_userPassword;
System.out.println ("密码修改成功,你的新密码为"+password );
}else {
System.out.println ("用户名或者密码不正确,没有权限更新管理员信息!" );
}
}
public static void main ( String[] args ) {
User user=new User ();
user.name="admin";
user.password="1234";
user.Login ();
}
}
运行结果如下: