面向对象面向过程

2019-08-04         19:57:28

面向对象与面向过程的总结:

1.面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。(不对立)

2.面向过程思想思考问题时,我们首先思考“怎样按照步骤实现?"并将步骤对应成方法,一步一步,最终完成。这个适合简单任务,不需要多协作的事务。如“如何开车?”

当需要很多协作才能完成时,面向对象的思想应运而生。如“如何造车?” ,需要多人协作, 所以面向对象的思想适合开发一些大型的软件。

3.解决复杂问题时:宏观上使用面向对象把握,微观处理上依然是面向过程(方法与控制语句是典型的面向过程的产物)

4.都是解决问题的思维方式,都是代码组织的方式。

 

对象是一个在内存中是一个内存块,用来表示一堆相关联的数据以及一些相关的方法。

对象的产生,类比企业发展,更深刻地理解为什么会产生"对象"这个概念。

数据无管理时代:最初的计算机语言只有基本变量(类似基本数据类型),用来保存数据。面对的数据逻辑非常简单不需要涉及"数据管理"的问题。类型与企业初期发展阶段只有几个人,大家都闷头做事就行了。

数据管理和企业部门制:企业发展中,员工多了怎么办?自然的想法是将他们归类。同理在编程中,变量多了,很简单的想法就是“将同类型的数据放在一起”,于是就形成了“数组”的概念,这就是“归类”的概念,便于管理数据、管理人。

对象和企业项目制:一个完整的项目组,就是个创业公司甚至小型公司的编制,大型公司内部都采用“项目制”的方式进行管理。随着计算机编程继续发展,各种变量的类型增多了,而且对数据的操作(指的是方法)也复杂了,为了方便协作和管理,我们”将相关数据和相关方法封装到一个独立的实体”,于是对象产生了;

比如,一个学生对象:

有属性(静态特征):年龄:20  姓名:张三  学号:1706

也可以有方法:学习、吃饭、睡觉

对象和类的概念:类(class)可以看作是对象的模板,或者图纸。类是对象的抽象。对象(class,instance(实例)),我们说某个类的对象与某个类的实例是一个意思。

 类=属性+方法,属性(成员变量)用于定义该类对象包含的数据或者说静态特征。  方法用于表示该类或该类实例的行为特征和功能实现。

一个简单的学生类,属性以及方法:

一个典型类的定义:

 

面向对象的内存分析:

java虚拟机的内存可以分为三个区域:栈stack   、堆heap   、方法区method area(也在堆里,作用特殊,所以独立出来)

栈的特点如下:1.栈描述的是犯法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)

2.栈属于线程私有,不能实现线程间的共享。启动程序一个程序的时候,这个程序会包含很多的线程。

3.JVM为每个线程创建一个栈,用于存放该线程执行方法的信息。

4.栈的存储特性是“先进先出,后进后出” (子弹夹模型)

5.栈是系统自动分配,速度快!是一个连续的内存空间。

堆的特点如下:1.用于存放创建好的对象和数组(数组也是对象)(new好的对象放在堆里)

2.JVM只有一个堆,被所有线程共享。

3.是一个不连续的内存空间,分配灵活,速度慢!

方法区:1.JVM只有一个方法区,被所有线程共享。

2.方法区实际也是堆,只是用于存储类、常量相关的信息。

3.用来存放程序中永远不变的内容。(静态变量、类信息、字符串常量等)

该程序的内存分析:

public class Student {
    //属性fields
    int id;
    String name;
    int age;
    Computer comp;  //comp是对象
    //方法
     void study(){
        System.out.println("我在认真学习!使用电脑:"+comp.brand);
    }
     void play(){
        System.out.println("我在玩游戏");
    }
    //程序执行的入口
    //javac Student.java ,java Student(虚拟机启动)执行类
    public static void main(String agrs[]){
        Student stu=new Student(); //创建对象
        stu.id=170602;
        stu.name="laura";
        stu.age=20;
        Computer c1=new Computer();
        c1.brand="联想";
        stu.comp=c1;
        stu.study();//调用study方法
    }
}
class Computer{   //创建一个电脑类,一个java程序中只能有一个public类
    String brand;    
}

 

 

转载于:https://www.cnblogs.com/laurarararararara/p/11299288.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值