OC-Day1____类与对象

2015.2.7

#import <Foundation/Foundation.h>

//面向过程,C语言是偏向面向过程编程的语言,C语言也可以实现面向对象编程,如:操作系统底层代码实现,很多都用了面向对象的编程思想

//面向过程的程序设计,把事物按照事物的发展过程,分成很多执行步骤,每一步都用函数实现,通过函数的调用实现对应的功能

//五子棋

//1.显示棋盘

//2.黑子先下

//3.判断输赢

//4.显示棋盘

//5.白子下棋

//6.判断输赢

//7.显示棋盘

//8.返回第二步

//9.赢棋结束

//面向对象编程

//把事物分成很多个对象,每一个对象都有对应的描述方法,对象之间通过发送消息进行通信,最终实现面向对象的程序设计

//1.棋盘对象

//2.黑白双方

//3.下棋规则

//首先是黑白双方接受终端输入下棋,发送消息给棋盘对象显示棋盘,棋盘对象发送消息给下棋规则对象,下棋规则对象判断输赢,没有赢发送消息给黑白双方

//类与对象

//从生活逻辑上

//人类     章子怡 奥巴马 张兆帅

//dog类    xiaoHei  xiaoBai

//电脑类    我桌子上这台  你桌子上那台

//从封装的角度上

//结构体: 封装数据类型

//函数:封装实现功能的方法

//类: 既封装了数据类型,又封装对应的实现方法

//可以把类看成一个升级版的结构体

//对象就是类定义的实例  Person *xiaoHong

//对象既封装了数据类型,又封装了实现方法

//从编程角度看

//对象就是类定义的变量

//官方定义

//类: 具有相同特征事物的统称

//对象: 类的实例化

//实例与方法

//把对象也叫着实例, 对象就是类的实例化

//操作对象的方法叫着实例方法

//

//[mycar drive];

//[mycar wash];

//[userText write];

//[userText read];

//[windows erase];

//[word  reloade];

//instance 实例(对象)

//instance variable 实例变量

//类的声明

@interface Student : NSObject //Student类继承与NSObject类, 类名首字母大写,Student是类名

{

int _age;//实例变量以_开头 习惯使然 也符合标示符命名规范

NSString *_name;

}

//构造方法

//返回值为id类型 方法名: init

- (id)init; //-表示对象方法,给对象调用 +表示类方法,给类本身调用

//id 类似与 C语言 void * 相当于泛型指针

//setter方法

//返回值: void  方法名: setAge: 形式参数: newAge

- (void)setAge:(int)newAge;

- (void)setName:(NSString *)newName;

//返回值: void 方法名: setAge:andName: 形式参数: newAge newName;

- (void)setAge:(int)newAge andName:(NSString *)newName;

//方法名: setAge::

//- (void)setAge:(int)newAge :(NSString *)newName;

//getter方法

- (int)getAge;

- (NSString *)getName;

//打印对象方法

- (void)print;

//类方法

+ (void)test;

@end

//类的实现

@implementation Student  //OC中的关键字都是以@开头

- (id)init //重写父类的构造方法

{

self = [super init];//指向自己的对象指针 super是调用父类对象的关键字,相当于一个编译器符号, 先使用父类的构造方法构造对象返回

if (self) {//判断父类方法是否调用成功

_age = 12;

_name = @"xiaohong";

}

return self;

}

//setter方法实现

//在当前类中,可以直接访问类中的实例变量,直接访问实例变量的方法有两种

//1.通过实例变量名直接访问

//2.通过 self指针直接访问

- (void)setAge:(int)newAge

{

self->_age = newAge;

}

- (void)setName:(NSString *)newName

{

_name = newName;

}

- (void)setAge:(int)newAge andName:(NSString *)newName

{

_age = newAge;

_name = newName;

}

//getter方法实现

- (int)getAge

{

return _age;

}

- (NSString *)getName

{

return _name;

}

- (void)print

{

NSLog(@"name is %@, age is %d", _name,_age);

}

//NSLog类似于C语言中printf

//%@ 打印对象

//NSLog自动换行

//测试当前类是否可用

+ (void)test

{

Student *xiaoFei = [[Student alloc] init];

[xiaoFei setAge:20 andName:@"小非"];

NSLog(@"name is %@ , age is %d", [xiaoFei getName],[xiaoFei getAge]);

}

@end

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

@autoreleasepool {

//        //1.用类创建一个对象

//        //xiaoHong 是对象指针变量  alloc申请的内存空间是对象

////        Student * xiaoHong = [Student alloc];//通过alloc方法创建对象

////

////        xiaoHong = [xiaoHong init];

//        Student *xiaoHong = [[Student alloc] init];

//

//        //NSLog(@"%p %ld", xiaoHong,sizeof(xiaoHong));

//

//        [xiaoHong print];

//

//        [xiaoHong setAge:20 andName:@"小红"];

//        [xiaoHong print];

//

//        NSLog(@"名字:%@ 年龄: %d", [xiaoHong getName],[xiaoHong getAge]);

[Student test];//利用类名调用类方法

}

return 0;

}

、、、、、、、、、、、、、、、、、、、、、、、、、、、分割线、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

以下程序顺序:main.m  --> .h -->.m

、、、、、、、、、、、、、、、、、、、、、、、、、、、分割线、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

#import <Foundation/Foundation.h>

#import "Person.h"//使用 import包含

//C与OC区别

//1.C语言包含头文件用include OC用import

//2.C语言为了防止头文件的重复包含 用#ifndef #define #endif

//OC语言不需要考虑这一点 用@class 防止循环包含

//3. OC的文件用.m C语言用.c

//4. OC语言的关键字用@开头

//5. OC语言完全兼容C语言

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

@autoreleasepool {

[Person testPerson];

}

return 0;

}

#import <Foundation/Foundation.h>

@interface Person : NSObject

{

float _weight;

float _height;

NSString *_name;

}

//构造方法

- (id)init;

//setter方法

- (void)setWeight:(float)newWeight;

- (void)setHeight:(float)newHeight;

- (void)setName:(NSString *)newName;

- (void)setWeight:(float)newWeight andHeight:(float)newHeight andName:(NSString *)newName;

//getter

- (float)weight;//习惯使然

- (float)height;

- (NSString *)name;

//打印方法

- (void)printPersonInformation;//OC中的命名规范,首字母小写,以后每个单词的首字母大写 "驼峰规则"

//类方法

+ (void)testPerson;

@end

#import "Person.h"

@implementation Person

- (id)init

{

self = [super init];

if (self) {

_name = @"小红";

_height = 165.5;

_weight = 54.6;

}

return self;

}

- (void)setWeight:(float)newWeight andHeight:(float)newHeight andName:(NSString *)newName

{

_weight = newWeight;

_height = newHeight;

_name = newName;

}

- (NSString *)name

{

return self->_name;

}

- (float)weight

{

return self->_weight;

}

- (float)height

{

return self->_height;

}

- (void)printPersonInformation

{

NSLog(@"name is %@  weight is %.2f height is %.2f", [self name], [self weight], [self height]);//通过self指针调用对应的方法

}

+ (void)testPerson

{

Person *xiaoHua = [[Person alloc] init];

[xiaoHua setWeight:67.8 andHeight:175.4 andName:@"小华"];

NSLog(@"name is %@, weight is %.2f height is %.2f", [xiaoHua name], [xiaoHua weight], [xiaoHua height]);

}

@end

、、、、、、、、、、、、、、、、、、、、、、、、、、、、分割线、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

构造方法

#import <Foundation/Foundation.h>

#import "Dog.h"

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

@autoreleasepool {

//Dog *dog = [[Dog alloc] init];//把对象空间清0

[Dog testDog];

}

return 0;

}

#import <Foundation/Foundation.h>

@interface Dog : NSObject

{

int _age;

NSString *_name;

}

//构造方法

//- (id)init;

//必须以initWithXXX开头

- (id)initWithAge:(int)newAge;

- (id)initWithName:(NSString *)newName;

- (id)initWithAge:(int)newAge andName:(NSString *)newName;

//setter方法

- (void)setAge:(int)newAge andName:(NSString *)newName;

//getter方法

- (int)age;

- (NSString *)name;

//打印方法

- (void)printDogInfomation;

+ (void)testDog;

@end

#import "Dog.h"

@implementation Dog

- (id)init

{

self = [super init];//super是调用父类的关键字, 先用父类的方法初始化

if (self) {//初始化失败返回nil 类似于C语言中的NULL  (void *)0

self->_age = 12;

self->_name = @"xiaoHei";

}

return self;

}

- (id)initWithAge:(int)newAge

{

if (self = [super init]) {

self->_age = newAge;

}

return self;

}

- (id)initWithName:(NSString *)newName

{

if (self = [super init]) {

self->_name = newName;

}

return self;

}

- (id)initWithAge:(int)newAge andName:(NSString *)newName

{

if (self = [super init]) {

self->_age = newAge;

self->_name = newName;

}

return self;

}

- (void)setAge:(int)newAge andName:(NSString *)newName

{

_age  = newAge;

_name = newName;

}

- (int)age

{

return _age;

}

- (NSString *)name

{

return _name;

}

- (void)printDogInfomation

{

NSLog(@"name : %@, age : %d", [self name], [self age]);

}

+ (void)testDog

{

Dog *dog1 = [[Dog alloc] init];

//[dog1 setAge:12 andName:@"小黑"];

NSLog(@"dog name is %@ dog age is %d", [dog1 name], [dog1 age]);

Dog *dog2 = [[Dog alloc] initWithAge:30 andName:@"xiaoBai"];

[dog2 printDogInfomation];

}

@end

、、、、、、、、、、、、、、、、、、、、、、、、、分割线、、、、、、、、、、、、、、、、、、、、、、、、、、、、

类方法

#import <Foundation/Foundation.h>

#import "Dog.h"

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

@autoreleasepool {

[Dog testDog];

Dog *dog = [Dog creatDogWithName:@"xiaoHuang" andAge:20];

[dog print];

}

return 0;

}

#import <Foundation/Foundation.h>

@interface Dog : NSObject

{

int _age;

NSString *_name;

}

- (id)initWithName:(NSString *)newName andAge:(int)newAge;

- (void)setName:(NSString *)newName andAge:(int)newAge;

- (NSString *)name;

- (int)age;

- (void)print;

+ (id)creatDogWithName:(NSString *)newName andAge:(int)newAge;

+ (void)testDog;

@end

#import "Dog.h"

@implementation Dog

- (id)initWithName:(NSString *)newName andAge:(int)newAge

{

if (self = [super init]) {

_name = newName;

_age = newAge;

}

return self;

}

- (void)setName:(NSString *)newName andAge:(int)newAge

{

_name = newName;

_age = newAge;

}

- (NSString *)name

{

return _name;

}

- (int)age

{

return _age;

}

- (void)print

{

NSLog(@"name is %@, age is %d", [self name], [self age]);

}

//类方法给类调用的

//用类名调用

+ (void)testDog

{

id dog = [[self alloc] initWithName:@"xiaoHei" andAge:12];//self 指向调用的类

[dog print];

}

+ (id)creatDogWithName:(NSString *)newName andAge:(int)newAge

{

id dog = [[self alloc] init];

[dog setName:newName andAge: newAge];

return dog;

}

@end

、、、、、、、、、、、、、、、、、、、、、、、、、、、分割线、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

#import <Foundation/Foundation.h>

#import "Adder.h"

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

@autoreleasepool {

// insert code here...

//

//NSLog(@"Hello, World!");

[Adder testAdder];

}

return 0;

}

#import <Foundation/Foundation.h>

@interface Adder : NSObject

+ (int)addA:(int)a andB:(int)b;

+ (void)testAdder;

@end

#import "Adder.h"

@implementation Adder

+ (int)addA:(int)a andB:(int)b

{

return a+b;

}

+ (void)testAdder

{

int a, b;

scanf("%d %d",&a, &b);

NSLog(@"sum = %d",[self addA:a andB:b]);

}

@end

、、、、、、、、、、、、、、、、、、、、、、、、、、、、分割线、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

单例类

#import <Foundation/Foundation.h>

#import "Dog.h"

//单例类

//单例类创建的对象只有一份

//实现多个对象指针共享数据

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

@autoreleasepool {

//NSFileManager *file = [NSFileManager defaultManager];

//        Dog *dog1 = [[Dog alloc] init];

//        Dog *dog2 = [[Dog alloc] init];

//        Dog *dog3 = [[Dog alloc] init];

//

//        NSLog(@"dog1 = %p", dog1);

//        NSLog(@"dog2 = %p", dog2);

//        NSLog(@"dog3 = %p", dog3);

//单例

Dog *dog1 = [Dog defaultDog];

Dog *dog2 = [Dog defaultDog];

Dog *dog3 = [Dog defaultDog];

NSLog(@"dog1 = %p", dog1);

NSLog(@"dog2 = %p", dog2);

NSLog(@"dog3 = %p", dog3);

}

return 0;

}

#import <Foundation/Foundation.h>

@interface Dog : NSObject

//必须以default开头

//+ (NSFileManager *)defaultManager;

+ (Dog *)defaultDog;

@end

#import "Dog.h"

static Dog *dog=nil;

@implementation Dog

+ (Dog *)defaultDog

{

if (!dog) {

dog = [[self alloc] init];

}

return dog;

}

@end

时间: 2024-10-16 07:42:28

OC-Day1____类与对象的相关文章

oc知识点 类和对象

第一讲  类和对象 1面向对象 OOP 面向对象编程的三大特性 :封装,继承,多态 2类和对象的概念和区别 类:具有相同特征和行为的事物的抽象 对象:就是类的实例  ,类是对象的类型 3类和对象的定义 接口部分: 对外声明类的特征和行为.(.h) 实现部分:行为的具体实现(.m) 接口部分标志 :@interface [email protected] 声明类实例变量(成员变量)和方法,及特征和行为 例 接口部分代码: @interface Teacher :NSObject{ NSString

OC 01 类和对象

一.  定义OC的类和创建OC的对象 接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实现(定义).跟函数类似,函数有分声明和定义 1.     类的声明 1)       代码编写 定义一个Car类,拥有2个属性:轮子数.时速,1个行为:跑 类名\属性的命名规则:标示符的规则 类名的命名规范:有意义.驼峰标识.首字母大写 #import <Foundation/Foundation.

2015.12.17 初识OC&amp;iOS 类和对象

iOS是iPhone Operation System的缩写. 使用iOS系统的设备有哪些『iPhone手机,iPad,Apple watch(Watch OS),iPod touch』. 交互层:cocoa touch 操作系统层:iOS 底层:硬件 #include 与 #import的区别 #include完成头文件的导入,可能会导致头文件相互引用和函数\变量的重复定义. eg: 为了解决这个问题,我们必须在文件的前面加上『#ifndef』 #import不仅完成头文件的引入,并且防止头文

ios开发之OC基础-类和对象

本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再将零散的知识点整理出来.这样的学习方法会带来更多的收获,同时要多做练习,按照思路,默写.改写代码.在这里,感谢欧阳坚老师,学习你的课程使我走上了ios的开发之路. 一定要明确一个要从事的方向,要不然就会感到迷茫.学习ios开发,并且从事ios开发这个行业,这就是我的选择.看到我的博客系列文章,其中大

OC的类和对象的初步认识

OC是面向对象的编程语言,如何创建和使用对象自然是重中之重,对象是怎么产生的呢?创建对象之前必须要有类,他就像要想盖大楼,必须要有图纸,这个图纸就类似于OC中的类 常用的关键字以及其他英文: 1 @interface / @end / @implementation / @public / NSLog(@"") / NSObject 2 3 -framework Foundation / Foundation / Foundation.h

02OC的类和对象

这章重点介绍OC的类以及对象,由于C语言是面向过程语言,而OC只是对于C语言多了一些面向对象的特性,所以OC相当于其他面向对象语言,例如C#.Java等没有那么多的语法特性,所以差别还是比较大的. 一.类的定义 在C#中定义一个类是很简单的,直接加class关键字和一对大括号就完成了,然而,我们在OC定义一个Person类看看. 1.在Xcode中,点击File->New File 2.选择CoCoa下的Object-C Class 3.输入类名Persion,选父类为NSObject.点击Ne

1,OC语言的前世今生 ,2,OC语言入门,3,OC语言与C的差异,4,面向对象,5,类和对象的抽象关系,6,类的代码创建,7,类的成员组成及访问

1,OC语言的前世今生 , 一, 在20世纪80年代早期,布莱德.麦克(Brad Cox)设计了OC语言,它在C语言的基础上增加了一层,这意味着对C进行了扩展,从而创造出一门新的程序设计语言,支持对象的创建和操作. 二,1985年,被赶出苹果公司的乔帮主成立了Next公司; 三, 1988年,Next计算机公司获得了OC语言的授权,并发展了OC语言库和一个开发环境,1994年,Next计算机公司(同年更名为Next软件公司)和Sun公司针对NEXTSTEP系统联合发布了一个标准规范,名为OPEN

oc基础第一天---类的方法,类与对象

1. 如何为类定义行为. 刚刚我们聊的是如何为类定义特征. 如何定义行为? 行为就事1个功能 也就事1个函数. OC中把行为叫做方法. 实际上和函数是一样的 代表1个功能模块. 2. 为类定义无参数的方法. 类的方法也分为两个部分. a. 方法的声明 1). 位置: 写在声明类的大括弧的外边. 2). 声明的语法: - (返回值类型)方法名; - (void)sayHi; 这个方法的名字就叫做sayHi; b. 方法的实现. 1). 位置: 写在类的实现之中. 2). 实现的语法: - (返回值

oc类和对象

//  main.m //  OC01类和对象 // //  Created by dllo on 15/7/15. //  Copyright (c) 2015年 cml. All rights reserved. // #import <Foundation/Foundation.h> // 先引头文件 #import"Phone.h" #import"Audio car.h" #import"Student.h" int mai

oc基础第二天类与对象---1复习

1. OC语言是在C语言的基础之上新增了一些面向对象的语法. 将C语言复杂的.繁琐的.东西封装的更为简单和易用. Objective-C: 本质其实就是C语言. OC完全兼容C. 2. OC将C难用的东西做了封装. 1). #import指令. 2). NSLog()函数. 3). NSString @"jack" 新增了一些数据类型. BOOL class 类 3. 面向过程与面向对象. 4. 代码中的面向过程与面向对象. 5. 类与对象 类 对象 6. 类和对象的关系 类是模板 对