当前位置 : 主页 > 编程语言 > c++ >

java基础笔记(三)

来源:互联网 收集:自由互联 发布时间:2021-06-30
gistfile1.txt 奔着月亮去的,可能会失败,但是没准能收获一颗星星呢?结构化程序设计:需求很容易获取,并且需求变化小,通常用于底层、嵌入式开发。分模块,单入口单出口,以功
gistfile1.txt
奔着月亮去的,可能会失败,但是没准能收获一颗星星呢?
	
结构化程序设计:需求很容易获取,并且需求变化小,通常用于底层、嵌入式开发。分模块,单入口单出口,以功能为核心,C语言。(数据流图)
面向对象程序设计:需求变化快,可以让功能不断变化,通常用于应用级开发,以对象为核心,符合对现实对象的认识。
拥抱需求,不管用户的需求如何变化,我们都能满足
面向接口编程
面向对象四大特点:
1.信息隐藏 :是一种对对象的保护机制,使外部无法直接访问对象的属性,避免使用者直接操作对象数据引起数据混乱等问题,提高安全性;使用者只能通过对象提供的set方法来操作属性,可以在set方法里面加约束;也可以增加权限验证;对数据的完整性进行控制,便于修改,提高可维护性
2.数据封装 :把属性和方法封装为一个对象
3.继承  :
4.多态



面向对象程序开发流程:
1.获取需求,找对象(事务在问题领域的抽象),因为对象是稳定的,功能是变化的
2.把一组对象中共同的部分的属性名和方法抽象为 类,类是一组对象的 共性,对象是实际存在的该类事务的 实例个体,类+类与类之间的关系=领域模型
3.建模:静态模型:类图  动态模型:时序图,顺序图,活动图
4.分层规划架构
5.整体设计,划分模块
6.编写模块,详细设计
7.测试
8.维护

JavaWeb:
用户把数据填写到表单发送数据(name,sex,age...)通过Student,即UseBean()类的setName()等方法把数据设置为一个对象的属性,即数据封装。

类创建对象的时候,在属性会在 堆区开辟空间,基本类型一般初值为0,引用类型一般为null
系统会调用构造方法,用于让堆区的对象属性初始化,
再堆区可以有很多对象,对象们会有同名属性,我们要通过对象来调用属性。
例:我们班有一百多个人,每个人都有一个属性:性别。我说:性别?
没意义,我要说:田林的性别 才可以获取田林这个对象的属性值:男
在JAVA中为  Student tl = null;
				tl = new Student();
				System.out.println(tl.sex);
输出为: 男

要调用一个方法,就必须从 栈 中获取一个对象的地址:
例:我们都有吃饭这个方法,但是调用吃饭这个方法,必须要说清楚是 谁 吃
在JAVA中为 tl.eat();

构造方法一般都是公有的,因为需要外部来调用构造方法
一个类可以有多个构造方法,通过参数签名来识别是哪一个

构造方法用于:给堆中 对象的属性初始化

调用构造方法相当于你装修房子(将对象的属性初始化),你必须给装修工你房子的地址和钥匙(传对象的地址)

虚拟机可以为一个对象可以调用多个构造方法
你可以把家里装修个百八十次
虚拟机也可以让调用同一个构造方法用于多个对象
给你家装修的装修队也可以装修别人家的房子








1.加载字节码文件Student.class到方法区的类代码区
2.创建一个Student类型的对象TL存放在主线程主方法的工作空间,即 栈 Student tl = null;
3.在 堆 中开辟对象的属性空间和方法空间,方法空间的大小取决于属性的类型
堆 中对象的方法空间,存放的是方法区共享代码段的引用。
4.虚拟机通过关键字new调用方法区的构造方法Student(),接收栈中的TL对象的地址,将堆 中对象的属性 初始化
tl  = new Student(); 
5.将对象的地址保存在 栈中,指向 堆 中该对象的属性和方法
6.tl.eat(); tl对象调用堆区的eat方法,堆区的eat方法指向方法区共享代码段的 eat()方法,eat()获取了对象tl的地址,然后操作tl指向的堆区的对象
7.tl.setAge();tl对象调用堆区的setAge()方法会在栈中开辟一个方法空间,在这个空间中存放了一个局部变量temp_age,用temp_age的值给tl对象的age属性设值;设值完毕,就释放栈中方法空间

一个源文件中,除了与文件同名的主类,别的类都不能加修饰符(public都不能加),
对象的类型就是对象的地址类型
默认访问权限就是,几个类在同一个目录下,就可以相互访问

包声明:字节码文件必须放在包声明的目录下才能过使用
Package jxau.tl.Student;
打包编译:通过 javac -d . Student.java 命令,自动创建目录保存字节码文件

包导入:只要当前类所调用的类不在当前目录下,就需要进行包导入
import jxau.tl.Student;
Import jxau.tl.*;
.*代表着自动导入当前目录下所有的字节码文件。
7LS]7QPB91@6}16V}DD7}_R.png
网友评论