OC1_类与对象
//
// main.m
// OC1_类与对象
//
// Created by zhangxueming on 15/6/9.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> //面向过程与面向对象 //C语言偏向面向过程
//面向过程强调业务的逻辑
//五子棋
//1.显示棋盘 2.黑子先走 3.判断输赢 4.绘制棋盘 5.白子下棋 6.判断输赢 7.绘制棋盘 8.返回第二步 9.下棋结束
//用函数把逻辑过程中的每一步实现, 通过函数调用加上控制结构实现整个项目 //面向对象强调的是对象
//1.黑白双方 2.棋盘系统 3.下棋规则 //黑白双方负责接收用户输入, 告知棋盘系统显示棋盘, 通过棋盘规则判断输赢 //类与对象
//从生活上:
//对象 类
//章子怡 奥巴马 人类
//小黑 狗类
//小飞的macbook computer //官方定义
//类: 具有相同特征事物的统称(抽象的概念)
//对象: 类的实例化(形象) //从编程的角度来看
//结构体: 封装了数据结构
//函数: 封装了处理数据的方法
//类: 既封装数据结构, 又封装了处理数据的方法 (升级版的结构体)
//对象: 用类定义的实例(类类型的对象) //类: Car 对象: Car *mycar
//Person Person *xiaoHua //实例方法(对象方法)与实例变量
//[window earse];
//[text write];
//[text read];
//[view show];
//[xiaoHua age]; //Person
//{
// NSString *name;
// int age;
//} //@interface: 定义类的关键字
//@end: 表示结束
//Student : 类名(类名的首字母要大写) //系统类的命名 NS+每个单词的首字母大写
//NSObject
//Next Step
//NSObject
//NSString
//NSArray
//NSData
//NSNumber
//NSMutableArray @interface Student : NSObject //NSObject类是一个根类(基类)
{
NSString *_name;//实例变量的命名通常用_开头(习惯使然),以后每个单词的首字母大写;
int _age;
} //构造(初始化)方法 //- 表示对象(实例)方法,给类的对象调用 + 表示类方法,给当前类调用,通常用类名来调用
//id : 泛型对象指针 类似void *
//无形式参数, 返回值为 id类型 方法名: init
- (id)init;
//有一个形式参数 name , 返回值为 id类型 方法名: initWithName:
- (id)initWithName:(NSString *)name;
//有两个形式参数 name age, 返回值为 id 类型 方法名: initWithName:andAge:
- (id)initWithName:(NSString *)name andAge:(int)age; //OC中的命名规范:第一个单词的首字母小写,以后每个单词的首字母大写 "驼峰规则" //匿名方法, 方法名: initWithName::
//- (id)initWithName:(NSString *)name :(int)age; //getter方法
//读取实例变量的方法
- (NSString *)getName;
- (int)getAge; //setter方法
//修改实例变量的方法
- (void)setName:(NSString *)name;
- (void)setAge:(int)age;
- (void)setName:(NSString *)name andAge:(int)age; //类方法
//给当前类调用, 通过类名调用 + (void)testStudent; @end //@implementation + 类名 //实现类的关键字
@implementation Student //initWithXXX
- (id)initWithName:(NSString *)name andAge:(int)age
{
self = [super init];//super是调用父类方法的关键字(编译器符号)
//先用父类的构造初始化自己, 然后再初始化自定义的实例变量
//self 指向调用者的对象指针
if (self) {
_name = name;
_age = age;
}
return self;
} //getter方法实现
- (int)getAge
{
return _age;
} - (NSString *)getName
{
return _name;
} //setter方法的实现 - (void)setName:(NSString *)name
{
_name = name;
} - (void)setAge:(int)age
{
_age = age;
} - (void)setName:(NSString *)name andAge:(int)age
{
_name = name;
_age = age;
} //测试当前类是否可用
+ (void)testStudent
{
Student *xiaoHua = [Student alloc];//alloc 类方法 创建对象 xiaoHua = [xiaoHua initWithName:@"小华" andAge:]; NSLog(@"name = %@, age = %i", [xiaoHua getName], [xiaoHua getAge]); Student *xiaoFei = [[Student alloc] initWithName:@"小飞" andAge:];
[xiaoFei setName:@"小小飞" andAge:]; NSLog(@"name = %@, age = %d",[xiaoFei getName], [xiaoFei getAge]);
} @end int main(int argc, const char * argv[]) {
@autoreleasepool { [Student testStudent]; }
return ;
}
OC1_类与对象的更多相关文章
- Java编程里的类和对象
像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...
- Python - 类与对象的方法
类与对象的方法
- C++基础知识(5)---类和对象
终于把C++中的基础在前面的几篇博客中总结完了,可能还有一些语法还没有总结到,没关系,以后用到了再查资料就好.类是C++中的一个非常重要的概念,这是区别你使用的C++到底是面向过程还是面向对象的一个重 ...
- 简述JavaScript对象、数组对象与类数组对象
问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...
- 前端学PHP之面向对象系列第一篇——类和对象
× 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...
- Objective-C Runtime 运行时之一:类与对象
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...
- [Java入门笔记] 面向对象编程基础(一):类和对象
什么是面向对象编程? 我们先来看看几个概念: 面向过程程序设计 面向过程,是根据事情发展的步骤,按进行的顺序过程划分,面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实 ...
- 解析Java类和对象的初始化过程
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...
- 02OC的类和对象
这章重点介绍OC的类以及对象,由于C语言是面向过程语言,而OC只是对于C语言多了一些面向对象的特性,所以OC相对于其他面向对象语言,例如C#.Java等没有那么多的语法特性,所以差别还是比较大的. 一 ...
随机推荐
- 解决IE6不支持fixed
/* IE6 是不支持position:fixed的,解决如下*/.right-bar{ _position:absolute;_top:expression(eval(document.docume ...
- RocketMQ常用命令
转自:http://jameswxx.iteye.com/blog/2091971 1.1. 控制台使用 RocketMQ 提供有控制台及一系列控制台命令,用于管理员对主题,集群,broker 等信息 ...
- eclipse反编译插件
eclipse翻译的插件很多,jadclipse 是其中一款.设置很简单. ①.下载net.sf.jadclipse_3.3.0.jar 官方网站:http://sourceforge.net/pro ...
- ALV可输入状态下输入金额字段变小数的问题
http://blog.163.com/mxb_sap@yeah/blog/static/10335262520167109022155/ 小数位数两位 当我在给ALV上给该字段输入整数 '12 ...
- Asp.Net Core- 多样性的配置来源
我们知道,ConfigurationProvider提供将数据源转换为字典的功能,数据源可以分为很多种,比如:物理文件.数据库.内存变量等等.物理文件又包括很多种类型的文件,比如:xml.json等等 ...
- 正则表达式30分钟入门教程<转载>
来园子之前写的一篇正则表达式教程,部分翻译自codeproject的The 30 Minute Regex Tutorial. 由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了 ...
- Codeforces Round #319 (Div. 1) C. Points on Plane 分块
C. Points on Plane Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/576/pro ...
- 看原理图之UART
UART原理 协议类之间的通信就跟人之间交流一样,要遵守一定的原则:1.你说的话别人得听得懂,不能有语言障碍:2.你不能说的太快,别人都来不及反应. 对上面的话用专业点的语句描述下就是: 1.双方约定 ...
- linux cpio 备份命令
cpio 命令 [root@linux ~]# cpio -covB > [file|device] <==备份[root@linux ~]# cpio -icduv < [fi ...
- python列表删除重复元素的三种方法
给定一个列表,要求删除列表中重复元素. listA = ['python','语','言','是','一','门','动','态','语','言'] 方法1,对列表调用排序,从末尾依次比较相邻两个元素 ...