栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【实训第三天】-面向对象及冒泡排序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【实训第三天】-面向对象及冒泡排序

1、面向过程 面向对象 1.1、什么是面向过程?什么又是面向对象?
  • 面向过程 Procedure Oriented 简称PO :如C语言

    Procedure /prəˈsiːdʒə®/过程

    Oriented /ˈɔːrientɪd/ 面向

​ 当解决一个问题的时候

​ 面向过程就是分析出 实现需求所需要的步骤,通过方法(函数)一步一步的实现这些步骤,接着依次调用即可,等方法执行完了,事情就搞定了,在就是面向过程。

​

  • 面向对象(Object Oriented简称OO :如C++,JAVA等语言):

​ 当解决一个问题的时候

​ 面向对象会把事物抽象成对象的概念,

​ 面向对象会把事物当做对象,宏观的分析出这些对象的一些属性和方法,然后让这些对象去执行自己的方法,问题得到解决,这就是面向对象的思维。

1.2、举二个例子
  • 一:洗衣机里面有脏衣服 怎么去洗干净?

    用面向过程解决:

    1、执行加洗衣粉方法;

    2、执行加水方法;

    3、执行洗衣服方法;

    4、执行清洗方法;

    5、 执行烘干方法;

​ 以上就是 解决这个问题 所需要的步骤 通过方法的一个一个的执行(是没有对象去调用的)来解决问题。

​ 用面向对象解决:

​ 1、我先弄出两个对象:“洗衣机”对象和“人”对象

​ 2、针对对象“洗衣机”加入一些属性和方法:“洗衣服方法”“清洗方法”、“烘干方法”

​ 3、针对对象“人”加入属性和方法:“加洗衣粉方法”、“加水方法”

​ 4、然后执行

​ 人.加洗衣粉

​ 人.加水

​ 洗衣机.洗衣服

​ 洗衣机.清洗

​ 洗衣机.烘干

​ 解决同一个问题 ,面向对象编程就是先抽象出对象,然后用对象执行方法的方式解决问题。

​

  • 二: 打麻将例子(你 我 他)

​ 面向过程:打麻将(你 我 他 她)

​ 解决问题 分析实现需求所需要的步骤 (此时牌以起好 开始打了) :那就是打牌了

​ 面向对象: 我.打麻将(你,他) or 你.打麻将(我,他) or 他.打麻将(我,你)

​ 解决问题 把这四个人抽象成对象 给一些方法(打麻将方法) 抽象出对象,对象执行动作 。

1.3、面向过程与面向对象的优缺点:

用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。

蛋炒饭制作的细节不说了,最后的一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。

蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。

到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。如果大家都不是美食家,没那么多讲究,那么从饭馆角度来讲的话,做盖浇饭显然比蛋炒饭更有优势,他可以组合出来任意多的组合,而且不会浪费。

盖浇饭的好处就是‘’菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是”可维护性“比较好,”饭” 和”菜”的耦合度比较低。蛋炒饭将”蛋”“饭”搅和在一起,想换”蛋”“饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。

​ 总结来说:

​ 面向过程

​ 优点:性能比面像对象高,因为类在调用的时候需要实例化,开销过大,比较消耗资源。比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,因为这些,性能是最重要的因素。

​ 缺点:没有面向对象易维护、易复用、易扩展

​ 面向对象

​ 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。

​ 缺点:性比相比面向对象是低的

2、面向对象三大特性

封装 继承 多态

封装:

封装是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式

简单来说:就是不想让别人看到的数据,以及别人无需知道的内部细节"锁起来"只留下一些公共的访问方式,使其与外部发生联系。

封装的好处:

隐藏实现细节,提供公共的访问方式,提高了代码的复用性和安全性

例如:夏天宿舍很热,我们(用户)只需要操作遥控器即可使用空调,并不需要了解空调内部(实现细节)是如何运行的

继承;

继承是在一个已有类的基础上建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类。通过使用继承可以提高代码的复用性。继承是多态的前提。

注意:

A: 子类只能继承父类所有非私有成员(成员方法和成员变量)

B: 子类不能继承父类的构造方法,但是可以通过super关键字去访问方法

c : Java只支持单继承,不支持多继承(C++支持),但是Java支持多层继承(继承体系)形象的说就是:儿子继承爸爸,爸爸继承爷爷,儿子可以通过爸爸继承爷爷。

多态:

多态就是同一个行为(上课)具有多个不同的表现形式(课程)

多态就是同一个接口,使用不同的实例而执行不同的操作

2.1、3、将老年机案例,用面向对象的思想描述该类的属性和行为

1、首先把这个手机当作成对象 然后给这个对象 宏观的分析出一些属性和方法

属性:

手机的价格、手机的品牌、手机的屏幕大小、手机的颜色、内存等等

方法:

打电话、发短信、开视频、看电视电影、刷小视频、购物、打车、点餐等等

3、总结数组知识点 3.1、数组的定义三种方式

一:

动态初始化(指定长度)

数据存储的数据类型[] 数组名称 = new 数组存储的数据类型[长度(正整数))] ;

二:

静态初始化(指定内容)

数据存储的数据类型[] 数组名称 = new 数组存储的数据类型[ ] {元素1,元素2,元素3 , …} ;

三:

静态初始化(指定内容)

数据存储的数据类型[] 数组名称 = {元素1,元素2,元素3} ;

3.2、排序(冒泡排序)
public class demo {
    public static void main(String[] args) {
        int[] a = {11,55,32,22,99};
        //排序从大到小
        //外层循环控制的是趟数
        for (int i = 0; i < a.length-1;i++) {
            //内层循环控制的是 每趟循环的次数哦  每趟比较出来的一个最大值
            for (int j = 0; j < a.length-1-i; j++) {
                if(a[j] < a[j+1]){
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
        System.out.println("排序之后:");
        for (int array:a) {
            System.out.println(array);
        }

    }
}
排序之后:
99
55
32
22
11
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932927.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号