01-第一个OC程序

//  main.m

#include

#import

#import "One.h"

#import "Two.h"

// OC和C语言一样程序一启动都会执行main函数

int main(int argc, const char * argv[])

{

printf("hello world\n");

NSLog(@"oc Hello world");

NSLog(@"222222");

//    调用OC源文件中的函数

test();

//    调用C源文件中的函数

test2();

return 0;

}

//  One.h

void test();

//  One.m

#import

void test()

{

printf("aaabbbccc\n");

}

//  Two.h

#ifndef _1____OC___Two_h

#define _1____OC___Two_h

void test2();

#endif

//  Two.c

#include

void test2()

{

printf("test2 .. ");

}

软件编程实质

•       软件编程就是将我们的思维转变成计算机能够识别语言的一个过程

理解面向对象

•       面向对象是相对面向过程而言

•       面向对象和面向过程都是一种思想

•       面向过程

–      强调的是功能行为

–      关注的是解决问题需要哪些步骤

•       面向对象

–      将功能封装进对象,强调具备了功能的对象

–      关注的是解决问题需要哪些对象

•       面向对象是基于面向过程的。

面向对象和面向过程区别

•       把衣服放进洗衣机

•       打开洗衣机

•       放进去衣服

•       关闭洗衣机

•       洗衣机-打开

•       洗衣机-存储

•       洗衣机-关闭

现实生活中我们是如何应用面相对象思想的

•       想打电话\发短信

•       去饭店吃饭

•       汽车坏了

•       买电脑

•       包工头

•       女朋友

•       面试

面向对象的特点

•       是一种符合人们思考习惯的思想

•       可以将复杂的事情简单化

•       将程序员从执行者转换成了指挥者

•       完成需求时:

–      先要去找具有所需的功能的对象来用。

–      如果该对象不存在,那么创建一个具有所需功能的对象。

–      这样简化开发并提高复用。

补充:面向对象的核心就是对象,那怎么创建对象? OC中创建对象比较复杂首先要理解一个概念叫做类.

现实生活中是根据一份描述,一份模板创建对象,编程语言也一样,也必须先有一份描述,

在这个描述中说清楚将来创建出来的对象有哪些属性和行为

类与对象的关系

•       使用计算机语言就是不断的在描述现实生活中的事物。

•       OC中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。

•       对象即是该类事物实实在在存在的个体

补充:现实生活的例子:如何创造汽车对象?

需要先有汽车的建造图纸,图纸上描述清楚汽车应该具备的属性和功能

然后再根据图纸上的描述生成汽车

每一辆汽车都是对象,都有自己具体的属性值,都是图纸的实例

图纸是抽象的,房子是具体的。图纸是对房子对象的高度概括

类与对象(图例)

补充:

OC中的类相当于图纸,用来描述一类事物。也就是说,要想创建对象,必须先有类

OC利用类来创建对象,对象是类的具体存在

因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象

类的定义

•       生活中描述事物无非就是描述事物的名称/属性和行为。

–      如:人有身高,体重等属性,有说话,打架等行为。

•       OC中用类来描述事物也是如此

–      属性:对应类中的成员变量。

–      行为:对应类中的成员方法。

•       定义类其实在定义类中的成员(成员变量和成员方法)

•       一般名词都是类(名词提炼法)

–      坦克发射3颗炮弹轰掉了2架飞机

–      小明在公车上牵着一条叼着热狗的狗

•       拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

补充:

类的设计,只关心3样东西:

事物名称(类名):人(Person)

属性:身高(height)、年龄(age)

行为(功能):跑(run)、打架(fight)

找类-三个例子

愤怒的小鸟游戏界面

植物大战僵尸

超级马里奥

找对象-美团

类名、属性、行为练习

•       僵尸、

•       炮弹、

•       车、

•       学生、

•       书本

02-第一个OC类

// 如何声明类、实现类、定义对象、用对象访问成员及具体细节

// 类中方法的声明和实现

#import

//如何定义一个OC类

//完整的定义一个函数分为两部分:函数的声明,函数的实现(函数定义)

//完整的定义一个类分为两部分:类的声明,类的实现

typedef enum

{

//    K + 枚举名称 + 含义

kIColorBlack,// 黑色

KIColorWhite// 白色

}IColor;

//1.类的声明

//@interface @end之间写类的声明,@end是用来告知什么时候声明结束

//声明类的属性,行为

//:NSObject为了让类具备创建对象的能力

@interface Iphone :NSObject

{

//    写public是为了让外面的指针能够访问对象中的成员变量

@public//公开成员变量

//    所有的属性必须写在这个括号当中

//    成员变量有默认的初始化值

int _cpu;// 手机cup

float _size;// 尺寸

IColor _color;// 颜色

}

// OC方法的定义

//void function();

//方法名/参数/返回值类型

- (void)aboutMyPhone;

//收到短信

//char* receiptMessage();

- (char *)recepitMessage;

//void sendSignal(char *number);

//当方法有参数的时候必须在参数类型前面加上一个冒号

//冒号也是方法名的一部分  sendSignal:

//-号不是方法名的一部分

//- (void)sendSignal;

- (void)sendSignal:(char *)number;

// 苹果提倡我们把方法名写的像句子一样

- (void)sendMessageWithNumber:(char *)number andMessageContent:(char *)content;

@end//初学者注意一定要有end

//2.类的实现

//主要用来实现声明当中的方法,说清楚方法当中要干什么

@implementation Iphone

- (void)aboutMyPhone

{

NSLog(@"查看手机信息");

}

- (char *)recepitMessage

{

//    return "老婆今天我去做大宝剑\n";

return "wife is god\n";

}

- (void)sendSignal:(char *)number

{

NSLog(@"拨打电话给 %s\n", number);

}

- (void)sendMessageWithNumber:(char *)number andMessageContent:(char *)content

{

NSLog(@"发短信给 %s ,内容是 %s", number, content);

}

@end

int main(int argc, const char * argv[])

{

//    在OC当中如果想执行一些行为,就立刻写上[类名/对象 方法名称]  [方法调用者 方法名称]

//    >用类名调用的是类方法

//    >用对象调用的是对象方法

//    指针类型 *指针变量名称

//    定义了一个指针变量p指向了Iphone类型的对象

//    保存了对象指针地址的变量,我们就可以把它叫做某个对象

Iphone *p;//p 是局部变量

p  = [Iphone new];// new操作它会在堆内存中分配存储空间

//    要给对象中的成员变量赋值和结构体一样

//    OC中想要操作一个对象的属性或者行为(方法),必须通过指针类操作

p->_cpu = 2;

p->_size = 3.7;

p->_color = kIColorBlack;

//    取出p指向对象中的属性

//    int number = p->_cpu;

//    printf("number = %d\n", number);

//    NSLog(@"cpu = %d, size = %.1f, color = %d", p->_cpu, p->_size, p->_color);

//    每new一次都会重新开辟一块存储空间

//    互不干扰,一份类可以创建无数个对象

Iphone *p2;

p2 = [Iphone new];

p2->_cpu = 4;

p2->_size = 4;

p2->_color = KIColorWhite;

//    利用对象调用对象方法

//    调用方法再OC当中称之为"发送消息"

//    [p2  aboutMyPhone];

//    char *message = [p2 recepitMessage];

//    NSLog(@"%s", message);

//

//    NSLog(@"123");

//    [p2 sendSignal:"12306"];

//    [p2 sendMessage:"10010" :"xxoo"];

//    [p2 sendMessage:

OC基础语法(1)—类和对象OC基础语法…相关推荐

  1. OC基本语法、类和对象、三大特性

    第一讲     OC简介及基本语法 Objective-C简称OC是在C语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,也就是可以在OC代码中混入C语言代码,甚至是C++代码.可以使用OC ...

  2. Python入门基础(6)--面向对象/类和对象/魔术方法

    面向对象基本概述 面向对象(Object Oriented Programming,OOP)编程:扩展性更强.可读性更好.面向对象的编程将数据和操作数据封装到对象中,组织代码和数据的方式更接近人的思维 ...

  3. Objective-c:OC语言简介、类与对象

    Objective-c 简介 1.1980年代初,Brad Cox发明了Objective-C: 2.1985年乔布斯成立了NeXT公司,创建了NextSTEP,使用Objective-C开发的用户界 ...

  4. 【Java基础】Java类和对象

    文章目录 一.什么是类和对象? 1.类的定义及可用关键字 2.成员变量的定义和声明 3.面向对象的三大基本特征 3.1封装性 3.2 继承性 3.3多态性 二.创建对象的几种方法 1.显式创建对象 2 ...

  5. Python编程基础16:类和对象

    文章目录 零.本讲学习目标 一.面向对象 (一)程序员"面向对象" (二)两种编程思想实现五子棋 (三)面向过程 vs. 面向对象 (三)面向对象三大特点 1.封装(encapsu ...

  6. Java基础笔记_6_类和对象_成员变量

    一 类和对象 类是抽象的概念,是对象的模板 对象是具体的事物,是类的具体实例 创建类的语法 public class 类名{  // 类内容 } 创建对象的语法 new 关键字就是实例化对象的意思.& ...

  7. python用来初始化对象属性的是_猪行天下之Python基础——8.1 类与对象

    内容简述: 1.面相对象的理解 2.类与对象 3.继承 4.组合 5.对象相关的内置函数 1.面相对象的理解 考虑到部分读者可能没有接触过面向对象编程,所以先介绍下面向对象的一些特征,形成一个面向对象 ...

  8. java类和对象的基础特性

    目录 点击传送>>> 前言: 1.面向对象概述 2.类和对象 1.对象 2.类 3.类的定义格式 1.成员变量(静态部分) 2.成员方法(动态部分) 3.实例化 3.权限修饰符 1. ...

  9. (四)nodejs循序渐进-函数,类和对象(基础篇)

    上一篇文章讲到了基本数据类型和运算符,相信大家都能做简单的运算,本篇文章将讲述函数,类,对象. 函数 在nodejs中,一个函数可以作为另一个函数的参数.我们可以先定义一个函数,然后传递,也可以在传递 ...

最新文章

  1. hibernate 继承映射
  2. springmvc二十七:springmvc-ResponseBody与ResponseEntity
  3. 【mysq】远程访问权限(允许远程连接)
  4. 浏览器的headers
  5. Opencv SolvePnP调用实战
  6. sql server高级查询,看这篇文章就够了
  7. ServerSocketChannel API用法
  8. 【操作系统】实验 模拟操作系统的存储系统
  9. 为什么微服务化、数据仓库都不是中台?
  10. springboot 2.x 使用定时任务执行多次问题
  11. 十多年前国内的三大杀毒软件瑞星、江民和金山毒霸的现状如何?
  12. 【全家福】多项式的各种板子
  13. js无限分级 树_js实现无限级树形导航列表效果代码
  14. vs的windows应用程序上的鼠标为什么一直是加载状态?_了解 JavaScript 应用程序中的内存泄漏...
  15. [转]小D课堂 - 零基础入门SpringBoot2.X到实战_汇总
  16. PMP课程笔记:第8章 项目质量管理
  17. 淘宝口令生成器,批量生成
  18. SPSS作业-如何判别是否服从正态分布
  19. 案例:理想主义的猪与结果导向的猪
  20. STM32自带GB2312字库显示汉字

热门文章

  1. PyCharmLearningProject学习基础
  2. Github开源安全工具集合
  3. 题目62 简易压缩算法
  4. 点击某个物体人机验证码java,captcha: 行为验证码(滑动拼图、点选文字),前后端(java)交互,包含h5/flutter/uni-app的源码和实现...
  5. systemd-timesyncd.service 失败 (code=exited, status=127)
  6. 【微信小程序】使用和风天气接口api(全过程)——获取天气
  7. python括号匹配o(1)复杂度_Python面试题:使用栈处理括号匹配问题
  8. 华为5pro计算机没有了,6月21日发布的华为Nova 5系列,已经没有秘密了
  9. Fluent截取局部面
  10. python中permute_Pytorch之permute函数