天天看点

黑马程序员——OC基础学习(一)---第一个OC语言程序和面向对象编程的基本认识

------  <a href="http://www.itheima.com" target="_blank" rel="external nofollow" target="blank">Java培训、Android培训、iOS培训、.Net培训</a> 期待与您交流! -------

1.第一个OC语言之“hello,world!” 各部分所代表的意思

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    }
    return 0;
}
           

       (1)#import<Foundation/Foundation.h>, 告诉编译器找到并处理名为Foundation.h文件,这是一个系统文件,#import表示将该文件的信息导入到程序中。

    (2)intmain(int argc, const char * argv[]),这个方法是程序的入口。参数argc-参数数 目,argv-参数值。

    (3)@autoreleasepool{}这是一个自动释放池,用于回收对象的存储空间。

    (4)@autoreleasepool{}这是一个自动释放池,用于回收对象的存储空间。

    (5)@“Hello,World!”,是代表NSString字符串对象,它是Objective-C常用的字符串类。

    (6)最后是return0语句,它表示要终止main的执行,一般情况下0代表正常结束,非0代表异常情况, 这是沿用了C语言的习惯。

2.NSLog函数和printf函数的区别

            NSLog函数                  printf函数
打印时显示时间\项目信息 不显示时间\项目信息
打印时能自动换行 打印时不能自动换行
参数形式为: @"XXXXXXX" 参数形式为:char*
只能以%s的形式,打印C语言中英文的字符串 不能打印OC的字符串
可以进行格式化的输出
输出OC特有的类型 %@(NSString)

3.OC中的数据类型

黑马程序员——OC基础学习(一)---第一个OC语言程序和面向对象编程的基本认识

4.OC中新增加的关键字

黑马程序员——OC基础学习(一)---第一个OC语言程序和面向对象编程的基本认识

     注意: 1 )C语言的关键字都可以在OC源程序中使用;   2 )OC新增的关键字在使用时,注意部分关键字以 "@" 开头.

5.面向对象的定义        定义:按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。通过面向对象的理念使计算机软件系统能与现实世界中的系统一一对应。

6.面向对象编程的定义          定义:是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作应用数据、状态,以类的形式描述出来,以对象实例的形式在软件系统中复用,已达到提高软件开发效率.

6.面向对象设计的四个主要特征:

  • 抽象性
  • 封装性
  • 多态性
  • 继承性

7.类和对象的概念:     1.类:是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。     2.对象:指现实世界中各种各样的实体。 

8.类的声明和类的实现   1.类的声明:在.h文件中,用于声明成员变量,方法.     声明格式:             @interface             {

               实例变量;                ...          }                声明方法;                ...     @end

  2.类的实现:在.m文件中,用于实现.h中声明的方法.     实现格式:            @implenmentation 类名                            方法的实现;                 ...            @end

9.在oc中创建一个对象

      创建格式:                 类名  *对象名 = [类名  new];

注:每一个对象中都有一份属于自己的属性。通过对象->对象成员(注意声明属性为:@public)的方式操作对象中的成员,对其中一个对象的成员进行了修改。和另一个对象没有关系。 

10.无参方法声明实现及调用 

  1.声明格式(以对象方法为例):                      - ( 返回值类型 ) 方法名;   例: - (void) run;

    2.调用格式(以对象方法为例):

                   [对象名  方法名];   例:[car  run];

11.有参方法声明实现及调用

        1.声明格式(以对象方法为例):

               - ( 返回值类型 ) 方法名:( 参数类型 ) 形参名 and方法名2: ( 参数类型 ) 形参名;                         例:- ( double ) sumOfNum1:( double ) num1 andNum2: ( double ) num2 ;  

    2.调用格式(以对象方法为例):   

                              [ 对象名   方法名:  实际参数   and方法名2:   实际参数];

                              例:[  p   sumOfNum1:  12   andNum2:    21  ];         注:" : "属于方法名的一部分.

12.综合案例

#import <Foundation/Foundation.h>

typedef enum color{kColorBlack,kColorWhite,kColorTHJ} iColor;
//创建一个类
// 1) 类的声明
@interface Iphone :NSObject  //NSObject 父类,默认的
{
   //类的属性(实例变量)
   //枚举类型
    @public
    iColor _color;  //定义一个枚举类型的变量 _color
                    //_color 取值范围,只能是 kColorBlack,kColorWhite,kColorTHJ其中之一
    NSString *_size;//屏幕尺寸
    NSString *_cpu; //Cpu型号
}


//声明类的方法
-(void)aboutMyPhone;
-(void)call:(NSString *) num;
-(void)sendMessage:(NSString *)num andContent:(NSString *)content;

@end




// 2) 类的实现
@implementation Iphone

//方法的实现
//查看本机信息
-(void)aboutMyPhone{

    NSLog(@"本机信息: 颜色:%d,尺寸:%@,CPU:%@",_color,_size,_cpu);

}
//给 xxx 拨打电话
-(void)call:(NSString *) num{

    NSLog(@"正在给%@拨打电话",num);

}
//给xxx发送短信,短信内容xxx

-(void)sendMessage:(NSString *)num andContent:(NSString *)content{

    NSLog(@"正在给%@发送短信,短信内容:%@",num,content);

}

@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //定义的时对象方法, 对象方法用什么来调用?   对象
        Iphone *iphone7plus = [Iphone new];
        
        //给对象的属性赋值?  对象名 -> 属性名
        iphone7plus->_color = kColorTHJ;
        iphone7plus->_size = @"7.7寸";
        iphone7plus->_cpu [email protected]"A16";
        
        [iphone7plus aboutMyPhone];
        [iphone7plus call:@"10086"];
        [iphone7plus sendMessage:@"10086" andContent:@"您好,麻烦告诉一下联通的客服电话是多少"];
        
        
        
    }
    return 0;
}
           

继续阅读