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