Java类与对象
面向过程与面向对象思想
面向过程
- 面向过程也是解决问题的一种思想,当我们在解决问题时,会按照预先设定的想法和步骤,一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。
- 上述描述的每一个具体步骤我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。
- 通过上面简单的描述发现,面向过程,其实就是面向着具体的每一个步骤和过程,就是面对具体的每一个功能函数。这些功能函数相互调用,完成需求。
面向对象
- 当不再面对具体的每一个方法时,发现操作也变的简单了很多。而封装具体功能的这类,是我们需 要面对的。而基于这个封装了具体功能的类,那怎么使用呢?
- 当面向封装了具体功能类,若要使用这个类,一般情况下,在Java中需要通过创建这个类的实体来使用。这个实体称之为对象。在开发中,我们是在不断的找封装不同功能的类。基于这些类,创建其对象,使用这些对象完成相应的操作。
- 通过上面的讲解和分析得出:面向对象是基于面向过程,对象是将功能进行了封装。只要找到了具体的类,创建出对象,就可以调用其中的具体功能。面向对象也是用来解决问题的一种思维模式。
- 在以后开发中,先找对象,调用对象中的具体功能。如果真的没有能够完成需求的对象,这时就自己创建对象,并将所需的功能定义到对象中,方便以后使用。
面向对象和面向过程差异
通过上述的分析和举例对面向过程和面向对象做出总结:
- 面向对象是一种更符合人们思考习惯的思想
- 面向过程中更多的体现的是执行者,面向对象中更多的体现是指挥者。指挥对象做事情
- 面向对象将复杂的问题简单化
在面向对象的世界中:万事皆对象
类与对象的关系
什么是对象
面向对象程序设计(OOP)就是使用对象进行程序设计。对象(Object)代表现实世界中可以明确标识的一个实体。例如:一个学生、一张桌子、一个圆、一个按钮甚至是一笔贷款都可以看作是一个对象。每个对象都有自己独特的标识、状态和行为。
- 一个对象的状态(state,也称为特征(property)或者属性(arrtibute))是由具有当前值的数据域来表示的。例如:圆对象具有一个数据域radius,它是标识圆的属性。一个矩形对象具有数据域width和height,它们都是描述矩形的属性。我们一般把对象的特有属性称之为成员变量。
- 一个对象的行为(behavior,也称为动作(action))是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。例如:可以为圆对象定义一个名为getArea()和getPerimeter()的方法。圆对象可以调用getArea()返回圆的面积,调用getPerimeter()返回它的周长。我们一般把对象的行为称之为成员函数。
什么是类
- 类是用于描述现实事物的,它将现实事物进行抽象化,模板化描述。将事物的特点(属性)和行为封装在其中。比如小汽车的图纸,图纸就是小汽车的模版。图纸上画着小汽车的各种特点和功能要求。
- 对象是现实生活中存在的具体的实例、个体。即生活看到每一个事物,以及我们想象中的任务抽象的概念,都是某一类事物的实例和个体。而这些个体都属于某一类事物,即这些个体都是某一类事物中的具体的实例。比如,小汽车就是一类事物,而小汽车又是基于小汽车图纸制造出来的真实个体。因此我们生活中的每一个实物都可以理解为是某一类事物的中的一个个体。创建对象的,通过对象就可以调用具体的属性和行为。
案例1:
定义一个Admin类,该类存在,username、password属性,实现一个控制台版的用户注册登录案例;将注册的用户写在一个数组中。
Adminl类
package com.openlab;
public class Admin {
public String username;
public String password;
}
运行测试类
package com.openlab;
import java.util.Scanner;
public class Test {
public static Admin[] users=new Admin[10];
public static int opacity=0;
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
while(true){
show();
menu1();
int choice =sc.nextInt();
if(choice==1) {
while (true) {
zhuce();
break;
}
}else if(choice==2) {
while (true) {
denglu();
break;
}break;
}else if(choice==3) {
while (true) {
search();
break;
}break;
}else if(choice==4) {
System.exit(0);
}
}
}
private static void search() {
// 查询
Scanner sc =new Scanner(System.in);
System.out.print("请输入查询用户名称:");
String username =sc.next();
if(username ==null || username.trim().equals("")) {
System.out.println("对不起,用户名不能为空");
search();
}if(!exeistsUser(username)) {
System.out.println("对不起,用户不存在,请注册");
search();
}else {
searchShow(username);
}
}
private static void searchShow(String username) {
// 查询结果显示
for(Admin admin:users) {
if(admin!=null && admin.username.equals(username)) {
admin.username=username;
System.out.println("查询成功"+"用户"+admin.username+"----"+admin.password);
}
}
}
private static void denglu() {
// 登录
Scanner sc =new Scanner(System.in);
System.out.print("请输入用户名称:");
String username =sc.next();
System.out.print("请输入密码:");
String password =sc.next();
if(username ==null || username.trim().equals("")) {
System.out.println("对不起,用户名不能为空");
denglu();
}
if(password ==null || password.trim().equals("")) {
System.out.println("对不起,密码不能为空");
denglu();
}
if(!exeistsUser(username)) {
System.out.println("对不起,用户不存在,请注册");
menu1();
}
if(password.length()<=3) {
System.err.println("密码长度不能少于3");
denglu();
}if(!equalsPassword(password)) {
System.out.println("对不起,密码不正确,请重新登录");
denglu();
}
else{
System.out.println("恭喜用户登录成功!");
}
}
private static boolean equalsPassword(String password) {
for(Admin admin:users) {
if(admin!=null) {
if(admin.password.equals(password)) {
return true;
}
}
}
return false;
}
private static void show() {
for(Admin admin:users) {
if(admin!=null) {
System.out.println("用户"+admin.username+"----"+admin.password);
}
}
}
private static void zhuce() {
// 注册
Scanner sc =new Scanner(System.in);
System.out.print("请输入用户名称:");
String username =sc.next();
System.out.print("请输入密码:");
String password =sc.next();
if(username ==null || username.trim().equals("")) {
System.out.print("对不起,用户名不能为空");
zhuce();
}
if(exeistsUser(username)) {
System.out.print("对不起,用户已经存在,请重新注册");
zhuce();
}
if(password.length()<=3) {
System.err.print("密码长度不能少于3");
zhuce();
}else{
Admin user =new Admin();
user.username=username;
user.password=password;
users[opacity++]=user;
System.out.println("恭喜用户注册成功!");
}
}
private static boolean exeistsUser(String username) {
for(Admin admin:users) {
if(admin!=null) {
if(admin.username.equals(username)) {
return true;
}
}
}
return false;
}
private static void menu1() {
System.out.println("~*~*~*~*~*~*~*~*~*~*~*~*~*~*");
System.out.println("\t 1.用户注册");
System.out.println("\t 2.用户登录");
System.out.println("\t 3.用户信息查询");
System.out.println("\t 4.退出系统");
System.out.println("~*~*~*~*~*~*~*~*~*~*~*~*~*~*");
System.out.print("请输入你的选择:");
}
}
结果