面向对象的概述

1.面向对象思想


    面向对象是基于面向过程的编程思想
    面向过程:强调的是每一个功能的步骤
    面向对象:强调的是对象,然后由对象去调用功能
    

2.面向对象的思想特点


    A: 是一种更符合我们思想习惯的思想 (“懒”)
    B: 可以将复杂的事情简单化
    C: 将我们从执行者,变成了指挥者
    
    举例:
        买电脑:
            面向过程: 打开百度----> 搜索电脑 ----> 了解电脑 ----> 了解电脑的基本组成 ----> 了解电脑中的组件 ----> 去电脑城 ---> 挑选电脑 ----> 货比三家 ----> 讨价还价 ---- 买回电脑
            面向对象: 我知道我要买电脑  ----> 叫电脑专家去给我买 ---> 电脑就买回来了
            
        洗衣服:
            面向过程:找到桶 ----> 脱下衣服 ---> 将衣服放入桶中  ----> 打开水龙头 ----> 放入蓝月亮 ----> 关闭水龙头 ---> 然后浸泡一会 ---> 搓一搓---> 然后弄干 ----> 找衣架 --> 晾衣服
            面向对象:   把衣服脱下来 ----> 丢到全自动洗衣机 ---> 找衣架 --> 晾衣服
            
        吃饭: 
            面向过程: 起床 ---> 开法拉利---> 去菜市场 ---> 挑选食材 ---> 洗菜 ----> 切菜----> 开火---> 放油 ---> 放盐 ---> 放水 --->放食材 ---> 翻炒 ----> 关火 ----> 装盘 ---> 吃饭
            面向对象: 打开手机----> 点开美团/饿了么---> 吃饭
        
            家常食物,买洗衣机和点外卖太不划算了,所以找个对象,才是真正面向对象 哈哈哈哈!!(ps:开玩笑)
            万物皆对象!
        注: 看完例子再对照面向对象的思想特点去看,就一目了然了!
      

 
3.把大象装进冰箱


    面向过程:
        动作有哪些呢?
        A:打开冰箱门
        B:装进大象
        C:关闭冰箱门
    代码体现:
      

 class Demo{
            public static void main(String[] args){
                /*
                 *    打开冰箱门的动作,我现在仅仅是为了演示,才写一个输出语句表示
                 *        其实,它可能需要做很多操作,这个时候代码就很多了,假设
                           我要多次打开冰箱门,代码一多,每次都得写一遍,麻烦不?
                           这个时候就应该用方法封装
                 */
                //System.out.println("打开冰箱门");
                //System.out.println("装进大象");
                //System.out.println("关闭冰箱门");
                
                //写了方法以后,调用就改变了,其实这种就是使用面向过程思想写出来了的
                //面向过程就是使用很多很多方法组成的,但什么方法都往里面放,到时候找的时候还得一个一个看
                //比如我有一个工具类: 操作字符串的方法也在里面,操作数组的方法也在里面,操作数学相关的方法也在里面,
                //到时候要找的时候很麻烦,不明确, 我们应该操作字符串的方法就放在String类中,操作数组的方法就放在Array类中,操作数学相关的方法就放在Math类中,
                open();
                in();
                close();
            }
            
            public static void open(){
                System.out.println("打开冰箱门");
            }
            
            public static void in(){
                System.out.println("装进大象");
            }
            
            public static void close(){
                System.out.println("关闭冰箱门");
            }
        }


        面向对象:
            我们怎么才能更符合面向对象的思想呢?
            A:有哪些类呢?
            B:每一个类里面有哪些东西(功能/方法)呢?
            C:类与类之间的关系是什么呢?
        
            A:把大象装进冰箱的分析? 如何分析有哪些类呢? 名称提取法(UML)
                大象
                冰箱
                Demo
            B:每一个类里面有哪些东西呢?
                大象
                    in();
                冰箱
                    open();
                    close();
                Demo
                    main()
            C:类与类之间的关系是什么呢?
                Demo类中使用大象 和 冰箱的功能
                
        代码体现:
            

class 大象{
     public static void in(){
             System.out.println("装进大象")
        }
 }
            
 class 冰箱 {
     public static void open(){
            System.out.println("打开冰箱门")
 }
                
 public static void close(){
         System.out.println("关闭冰箱门")
        }
}
            
class Demo{
     public static void main(String[] args){
         冰箱调用开门
         大象调用进去
         冰箱调用关门
   }
}


            看到这里,你会觉得面向过程,看似代码更少,感觉更好一点,其实不是的,举个例子吧,就是看博客的时候,我们看到写的比较好的文章
            都喜欢收藏,像我刚开始用的时候,就直接收藏到默认书签,刚开始收藏几篇,其实想回过头看的时候还很容易找到,但日复一日,年复一年,收藏的 
            文章越来越多,这时假如你要找一个之前收藏的关于“数据库索引”该篇文章时,你就很找到,因为该文件夹下,什么文章都往里面存过,(这就相当于面向过程,刚开始觉得很方便,随着时间的推移,需求的增加,后面就越来越难维护了)
            
            正确的做法是:将这些文章分类, 创建一个JavaSE的文件夹,下面创建一个面向对象的文件夹, IO的文件夹,集合的文件夹...., 然后对应的文章放到对应的文件夹中去,要找的时候,就可以很快找到
                      (这就好比,面向对象: 刚开始可能看起来要麻烦一点,但是后期维护起来比较方便,而且结构非常清晰!!)
            
            //如果要做一个复杂的项目,一般采用面向对象的思想,因为后期维护性好,结构非常清晰


4.开发,设计,特征


面向对象开发:
    就是不断的创建对象,通过对象调用功能
    
面向对象设计:
    其实就是在管理和维护对象之间的关系
    
面向对象的特征:
    封装
    继承
    多态
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值