类的设计

类的设计

  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关键字用来调用父类的方法

原文地址:https://www.cnblogs.com/firstsky/p/5892897.html