OC-1-面向对象
课程要点:
- C语言是一种面向过程的语言,OC是一种面向对象的语言
- 类与对象的关联
- 如何在xcode中创建一个类
- 如何在类中标记该类事物的属性和动作
C语言是一种面向过程的语言,OC是一种面向对象的语言
1、面向过程
我现在让没有学过iOS开发的小闪同学去负责一个项目,此时在我需要做以下事情,小闪才能做到我交付给她的任务。
① 第一天我需要告诉她,掌握哪些知识才能够做这个项目,如:Xcode软件,C,OC(MVC,KVC,KVO,代理,单 例......),UI.......
② 在接下来的两星期我要手把手的教她怎么用C语言写程序,以及写的每一句代码什么意思。
③ C语言基本掌握以后,我继续用两星期左右的时间去手把手的教小闪同学如何用OC写程序,以及会告诉她每一句代码的意思。两星期根本讲不完整个OC知识,而且OC里有些东西如果不结合实际例子根本不好理解。但这两周的时间已经把OC的基本知识给小闪介绍完毕。
④ 接着便会进入UI阶段,还是会手把手的教她如何绘制app里的一些试图,以及告诉她这里面潜在的一些坑,另外在UI阶段我会结合实际需求不断的给小闪补充在OC阶段没有讲的一些知识点。例如:单例、代理、KVC,KVO。
⑤ 最后进入项目阶段。我让小闪同学在我给的选项里选择一个项目,独立完成。如果遇到问题,首先自己想办法解决,如果实在解决不了,我再介入。
⑥ 小闪最终在规定的时间内完成她选择的项目,让我很是欣慰。现在我才放心而且相信小闪同学能够做好我刚开始想要让她所负责的项目。
PS:在这个例子中,我所面对的重点其实就是过程。我要让小闪能够单独做项目,我得实实在在、认认真真的做到我列出的每一步,才能实现我最后让小闪帮我做项目的目的。缺少任何一步都不行。这就是面向过程,每一步都得亲力亲为。
2、面向对象
距离我上次教小闪同学iOS课程已经有半年了,她在这段时间表现不错,我上次让她负责的项目也已经完美交付。现在我手里头又有一个项目需要找人做,客户给的钱也不少,那就还交付给小闪吧,让她半年交付。我呢,就去喝喝茶,钓钓鱼,享受生活。哈哈哈哈哈哈哈。。。。。
PS:此时我面对的重点不在是过程而是对象,我只需要知道这个对象有实力做到我交给她的事情就行,具体怎么做这个对象自己有办法。我最终只要得到我想要的结果便可。
类与对象的关联
1、类的概念
类,是对同一类事物高度的抽象,类中定义了这一类对象所应具有的属性和动作。简单的说类就是同一类事物的统称。
我说人,你脑子里会瞬间出现一个关于人的概念,你知道满足什么条件才叫做人类,但你无法跟对我说出是具体的哪一个人。人就是对世界上所有人的一中高度抽象。
类中的属性指的是这个高度抽象的事物中他所有的属性,比如人的名字、性别、年龄等属性。
类中的动作指的是这个高度抽象的事物中他能做的事,比如人会吃饭、会喝水、会打架、会穿衣服。
2、对象的概念
对象,是类的一个实例。
我说人类中的小闪,此时你脑袋里关于小闪的概念不在是模糊的了,你知道谁了小闪了(就是接了我两个项目、也是你们学姐的那位)。还有习大大、奥巴马、安培等等这些具体的人,便是人里面具体的实例。
PS:由此咱们可以得知,一个结论------万物皆对象。
如何在xcode中创建一个类
在C语言时,咱们创建工程一直选的是C语言,现在咱们进入OC,创建工程时一定要记得选择OC语言
接下来的图示是如何在Xcode中创建一个类
如何在类中标记该类事物的属性和动作
通过上面那些操作,咱已经创造出来了一个类,由类名可知,咱们创造这个类是为了能够抽象人类,人类有名字等属性,吃饭等动作。但目前这个Person类却是一无所有。所以为了完善这个类,我需要在类中做一些操作。(在次我只给人类设置了名字属性,和吃饭动作)。
类创建完以后大家可以发现,在咱们的工程里多了两个文件。Person.h和Person.m文件,这两文件的相辅相成共同构成了咱们的Person类。接下来分别介绍.h文件和.m文件的作用。
就我理解看来,Person.h和Person.m共同构成了一份简历。
我们先看看简历格式:
第一部分:个人属性,姓名-性别-年龄-学历-婚姻状况
第二部分:能做什么事
第三部分:举例子,告诉面试官你是是怎么做在第二部分提到的那些事,以让其相信你确实有实力做这些事。
接下来我们在看看Person类是怎么与简历格式一一对应的。
Person.h 是咱们的声明文件,所有需要让别人知道的信息都是写在这里(比如简历里的第一部分和第二部分)
#import <Foundation/Foundation.h> /*
* interface:interface是接口的意思,咱们通过这个接口告诉别人咱的基本情况 * Person就是咱们的类名 * NSObject表明这个类继承的NSObject,现在不用理解什么是继承,但要名字OC中所有类都是基于NSObject延展出来的。 */
@interface Person : NSObject
{
NSString *_name;
}//大括号里面放的是咱们简历里的第一部分,也就是基本属性部分 //方法(在C里叫做函数)是为了声明某一个功能,也就是咱们简历的第二部分,能做什么事。
- (void)eatFood; @end
Person.m
#import "Person.h"
//implementation是实现的意思
@implementation Person
//在Person.m中咱们要把在.h中声明的方法给实现,也就是说要在大括号内实现一步一步是怎么走的。只要有大括号就叫做实现,只不过实现的是nil而已。这部分相当于简历的第三部分。
- (void)eatFood{ } @end
至此,我已经将这个类给完善了,现在这个类就能够代表人了。此时这个类有名字这个属性,并且有吃饭这个动作。
需要掌握的知识:
1、理解类和对象的意义
2、知道怎么在Xcode中创建一个类
3、知道类和实际生活的映射关系
练习:狗有名字,能咬人。 在Xcode中采用类映射一下这个事物。
思考:字符串是不是一种类,如果是试着举出一个对象属于字符串。
以上是个人见解,若有错误欢迎指正,在学习中若有不理解欢迎骚扰 QQ:2314858225
OC-1-面向对象的更多相关文章
- OC中面向对象2
一. 定义OC的类和创建OC的对象 接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实现 ...
- OC:面向对象的编程思想、基本的知识点总结、强,弱引用
OC 面向对象 和 面向过程 参考 面向过程:使用步骤划分功能,然后用函数一步一步的调用 面向对象:OOP (Object Oriented Programming) 使用功能来简化问题, 面向对象语 ...
- oc语言--面向对象的三大特性
一.封装 1.什么是封装 在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将对象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的 ...
- OC学习--面向对象的个人理解
1. 什么是面向对象? 以下一段话是我在百度上找的解释: 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面 ...
- OC中的面向对象语法
一. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 打开电脑 播放电 ...
- OC语言的面向对象—类和对象、方法
1. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 ➢ 打开电脑 ➢ ...
- 在Objective-C中浅谈面向对象
接触面向对象也有一段时间了,当时是通过C++学习的OOP,后来又接触到了PHP和Java.每种OOP的语言在面向对象上或多或少都会有不同的地方,现在在学习OC的面向对象部分,又感觉到OC面向对象的特点 ...
- OC笔记一:Objective-C简介
1.OC简介 全称:Objective-C,是扩充C的面向对象编程语言,主要用于iOS和Mac OS开发. C语言的基础上,增加了一层最小的面向对象语法 完全兼容C语言 可以在OC代码中混入C语言代码 ...
- 黑马程序员_ Objective-c 概述及面向对象与三大特性
-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
随机推荐
- 手动编译含package的java源程序(包含外部包中定义的类)
1)定义一个GSM类,如下: 包名是“SRC.GSM”,并且此程序引用了外部jar包.使用javac命令对GSM.java进行编译: GSM.java所在的文件夹如下所示: 切换到这个目录为当前工作目 ...
- 《深入理解Spark-核心思想与源码分析》(二)第二章Spark设计理念和基本架构
若夫乘天地之正,而御六气之辩解,以游无穷者,彼且恶乎待哉? ——<庄子.逍遥游> 翻译:至于遵循宇宙万物的规律,把握“六气”的变化,遨游于无穷无尽的境域,他还仰赖什么呢! 2.1 初始Sp ...
- Mybatis添加用户&&Mybatis添加用户返回ID
(1)添加用户(添加User记录) <!--插入用户 --> <insert id="insertUser" parameterType="com.so ...
- STM3的Uart中断接受数据和非中断接受数据!
//非中断方式接受数据if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET) //接收数据寄存器非空标志位{ str = USART_Recei ...
- Oracle RAC 环境下的 v$log v$logfile
通常情况下,在Oracle RAC 环境中,v$视图可查询到你所连接实例的相关信息,而gv$视图则包含所有实例的信息.然而在RAC环境中,当我们查询v$log视图时说按照常理的话,v$log视图应当看 ...
- [Java基础] Java多线程-工具篇-BlockingQueue
转载自: http://www.cnblogs.com/jackyuj/archive/2010/11/24/1886553.html 前言: 在新增的Concurrent包中,BlockingQue ...
- Shell实现多级菜单系统安装维护脚本实例分享
Shell实现多级菜单系统安装维护脚本实例分享 这篇文章主要介绍了Shell实现多级菜单系统安装维护脚本实例分享,本文脚本用多级菜单实现管理WEB服务器.Mysql服务器.Nginx服器等,需要的朋友 ...
- Objective-C:运行时runtime
1.是否可以把比较耗时的操作放在通知中心中? 通知在哪一个线程发的,那么对通知事件的处理就在同一个线程中进行; 如果在异步线程发的通知,那么可以执行比较耗时的操作: 如果在主线程发的通知,那么就不 ...
- 使用x64dbg分析微信聊天函数并实现发信息
1.引言 我们知道微信现在不光在手机上很常用,在电脑也是非常常用的,尤其是使用微信联系客户和维护群的人,那这个时候每天都会定期发送一些信息,如果人工操作会很累,所以自动化工具是王道,本节就使用x64d ...
- OpenGL实现多层绘制(Layered Rendering) [转]
http://blog.csdn.net/u010462297/article/details/50589991 引言 在某些情况下会需要用到多层绘制.FBO下有多个颜色挂接点(Color Attac ...