zoukankan      html  css  js  c++  java
  • 类的设计

    类的设计

      c语言是面向过程的编程语言,c语言中的代码是"祈使句",强调的是存储数据,管理数据,程序员通过写代码操作cpu进行数据存储,数据管理

      oc语言是面向对象的编程语言,oc语言的代码是强调主语的语言.oc程序中,会添加很多可以接收消息的单元(对象),每个单元具有一个单独的功能,这些单元相互配合,完成一个完整的应用程序

      oc语言(objective-c)是ios应用开发的核心语言 

      [oc的用途]

        oc语言可以用来编写mac os操作系统

        oc语言可以用来编写基于mac os系统的应用程序

        oc语言可以用来编写ios操作系统

        oc语言可以用来编写基于ios操作系统的应用程序 

      同样是面向对象的语言有c++,java,oc

      公认的第一个面向对象的程序设计语言是 simula 67 语言,而c++就是基于 simula 67 诞生的新的面向对象的语言

      公认的第二个面向对象的程序设计语言是 smalltalk 语言,而oc,java就是基于 smalltalk 诞生的新的面向对象的语言 

      区别:

      [继承性]

        c++,支持多继承

        oc,java只支持单继承

      [动态性]

        c++,静态语言.在编译期,编译器会做静态语法检查,静态编译,运行起来的程序安全性比较高

        oc,动态语言.在程序运行期间可以根据字符串的内容决定调用哪个方法,加载哪个类,运行起来的oc程序灵活性较高

     

    一.类和对象

      通过上面的了解,知道oc程序中充斥着各种各样的对象,而这些对象都要由对应的类来创建

      什么是类?什么是对象?类和对象的关系?

      [从生活角度看]

      类    对象

      人    你,我

      书    你桌上的那本书,我桌上的那本书

      球    你家的那个篮球,我家的那个篮球

      机器人  R2-D2,BB8

      [从代码角度看]

        [创建oc工程] 

          工程名:可以是中文,但是如果后期创建ios的工程,工程名必须是英文,因为ios工程使用中文工程名会产生一些无法预 料的错误

           语言类型:选择Foundation或者Objective-c 

        [oc工程的特点]

          #import <Foundation/Foundation.h>

          <1>自动包含Foundation.h头文件,Foundation.h文件写有常用的绝大部分头文件的包含语句
          <2>使用#import指令来包含Foundation.h头文件

            oc语言的程序是基于Foundation框架的,Foundation框架是oc的基础框架,脱离Foundation框架几乎无法写出一个 完整的ios应用程序

             import,可以保证被包含的头文件只被包含一次

          <3>oc默认的源代码文件是.m结尾的文件
          <4>oc特有的打印语句,和oc特有的字符串

            NSLog(@"Hello, World!");

            oc中打印字符串,使用NSLog函数

            oc中字符串,都是@开头的字符串(c中的字符串在oc中依然可以使用)

            [注] oc语言是完全兼容于c语言的

          <5>NSLog打印字符串,带有特殊的日志字符串
     

    二.类的创建

      c语言的结构体和oc语言的非常相似

      oc中为了描述一个事物,使用类来实现

      c中的结构体:负责存储数据

      c中的函数:负责管理数据

      oc中的类,就是c中的结构体和函数的结合,既负责存储数据,又负责管理数据

    //Person是我们创建的类的名字
    //:表示继承关系
    //NSObject是Person类的父类
    //在oc语言中,NSObject类是所有其他类的直接/间接的父类
    @interface Person : NSObject
    {
        //年龄
        int age;
        //身高
        int height;
        //名字
        char name[20];
    }
    
    //oc中的函数一般称为“方法”method
    //oc中的方法,分两类:对象方法 和 类方法
    //对象方法,减号(-)开头的方法,必须由对象进行调用
    //类方法,加号(+)开头的方法,必须由类名进行调用
    //吃饭
    - (void)eat;
    
    //睡觉
    - (void)sleep;
    
    @end

      通过File -> New -> File,使用模板创建的类都会自动生成.h和.m文件

      [类的.h文件] 类的声明,类的声明关键字:interface

        <1>添加成员变量

        <2>添加成员方法(方法的声明)

        [注] 类的声明,是由 成员变量 + 成员方法声明 构成

      [类的.m文件] 类的实现(具体指 方法的实现),类的实现关键字:implementation

        一个类一旦创建成功,就可以使用类名来创建对象

     

    三.对象的创建 

        //创建对象方法一:
        Person *liyifeng=[Person alloc];//在堆区创建对象
        liyifeng=[liyifeng init];//给堆区的对象初始化
    
        //创建对象方法二:
        Person *linzhiling=[[Person alloc] init];//创建对象的同时给堆区初始化

     

    四.方法的调用 

      //oc中的函数一般称为方法”method

      //oc中的方法,分两类:对象方法 类方法

      //对象方法,减号(-)开头的方法,必须由对象进行调用

      //类方法,加号(+)开头的方法,必须由类名进行调用

      调用类的方法必须用[]的方式

      [liyifeng eat]; 

      [注] 在同一个类的.h和.m文件中相互切换,ctrl+win+⬆️/⬇️

      [注] 在一个类的所有对象方法(减号方法)中,都可以直接使用成员变量

      一旦某个对象调用了对象方法,这个对象方法内部使用到的这些成员变量一定是属于这个对象的

      [ selfsuper ] 

    -(id)init
    {
        if (self=[super init])
        {
            //给当前对象的成员变量赋值(初始化)
            age = 10;
            height = 1.7;
            strcpy(name, "liyifeng");
        }
        return self;
    }

        [注] self,代表当前对象(谁调用这个方法,self就代表谁)

        [注] super,super关键字用来调用父类的方法

  • 相关阅读:
    小甲鱼与客服的对话,代码与解析
    (role,line_spoken) = each_line.split(':',2) 小甲鱼python 一个任务
    python open() 方法 No such file or directory: 应该怎么解决
    并发编程
    并发编程
    并发编程
    并发编程
    并发编程
    并发编程
    并发编程
  • 原文地址:https://www.cnblogs.com/firstsky/p/5892897.html
Copyright © 2011-2022 走看看