• OC类的设计


    //Objective-C面向对象的C语言。

    //OC完全兼容C,凡是C语言代码可以直接编译在OC的工程当中。

    【面向过程的语言】都是祈使句,直接和CPU沟通。目的是操作CPU,储存数据,管理数据。

    //数学逻辑,就像小学解应用题,关注的是数据和管理数据。

    【面向对象的语言】在程序中,添加能够接收消息的单元(对象),每个单元拥有自己的功能,各单元合作,完成程序。

    //应用程序都是用(面向对象的语言编程)(OOP)的

    //面向对象没有具体的官方定义。早期只使用【继承】【封装】【多态】编写程序的思想。后来,主要指将生活逻辑映射到程序当中。

    【类和对象】

    一.认识类(Class)和对象(Object)

    //通过上面的描述,我们知道对象是接受信息的单元,是面向对象程序的核心。那么如何理解对象呢,类和对象是什么关系。

    <1>生活逻辑

    类 对象

    人               你,我

    电脑 你桌上那台 我桌上这台

    超级英雄 美国队长 钢铁侠

    外星人       奥特曼  擎天柱

    <2>代码上看

    //编写OC程序,需要使用集成开发工具Xcode

    //File -> new -> project 创建新工程

    //OS X -> Application(应用程序) -> command line tool(命令行程序)

    //Mac OS工程名使用中文无所谓,iOS工程使用中文名会导致不可预知的错误,无法修复。

    //Foundation是OC语言的基础框架,脱离Foundation框架,不能写出OC程序。

    类:是一个自定义的类型,类似结构体或数组

    对象:是使用类这个类型创建的变量

    //类似结构体和结构体变量

    <3>从封装的角度上看

    结构体:对数据结构体的封装,负责存储数据

    函数:对功能的封装,负责管理数据

    类:同时对数据结构体和管理数据的方法进行封装,既能存储数据,又能自己管理数据。

    //将结构体和函数结合起来就成了类。

    <4>官方定义

    类:同一类特征的对象的抽象。

    对象:类的具体表现形式,或称具象。

    二.构造方法

    【注】OC中称所有init开头的方法为构造方法

    【注】构造方法用于初始化对象,初始化对象的成员变量。

    //PSBRect  rect1, rect2;

    //[rect1 init]  self = &rect1;

    //[rect2 init] self = &rect2;

    三.直观地感受一下面向对象的程序

    小明手里有两张牌,左手红桃A,右手黑桃K,问小明交换两手的牌,之后左右手各是什么牌?

    三个 五个

    电视剧:

    1.选演员         找对象,实现对象

    2.彩排   写程序流程

    【类方法】

    //类方法就是【静态方法】,方法不属于任何对像,为类所有。类方法中不能使用对象的成员。

    【注】类方法就是C++中的静态方法,不属于任何一个对象,通过类名来调用。

    - (void)show;       //对象的方法

    + (void)show;       //类的方法

    [dog show];

    //对象的消息,发送给对象

    show(dog);   

    [Dog show];

    //类方法用类名调用

    【特征】

    <1>类方法不能使用成员变量

    <2>类方法不能调用对象的方法

    【作用】

    <1>创建对象[ alloc]

    <2>对一个功能模块,留下简单的对外接口。

    //流程可以实现在类方法中,返回结果

    //类方法就类似main函数,是一个模块的“main函数”。

    <3>声明单例对象

    //全局变量存储的数据,为整个程序每个函数共享。

    【问】如果用对象存储数据,能否声明成全局变量,使对象中的数据,为全程序共享?

    【答】OC不允许对象静态内存分配,因此不能声明在数据段,不能声明成全局变量。

    但是可以声明为单例对象,单例对象存储的数据,为全程序共享。

    //单例和工厂是OOP中常用的设计模式

  • 相关阅读:
    poj 2377 Bad Cowtractors (最‘大’生成树)
    POJ 3626 Mud Puddles (BFS)
    hdu 3367 Pseudoforest (krusual)
    hdu 1548 A strange lift (bfs)
    poj 1860 Currency Exchange (Bellman_Ford)
    poj 1005 I Think I Need a Houseboat
    poj 3625 Building Roads (最小生成树)
    zoj 1586 QS Network (最小生成树)
    poj 1679 The Unique MST (最小生成树)
    .NET中书写XML的一种简单方法
  • 原文地址:https://www.cnblogs.com/liudongyan/p/4395134.html
Copyright © 2020-2023  润新知