《黑吗程序员》OC的认识和第一个OC类

面向对象和面向过程的区别

① oc是面向对象

② c是面向过程

③  面向对象和面向过成只不过是解决问题的两种不同的思路

④  面向过程只不过是考虑问题解决的步骤,面向对象只不过是考虑解决问题需要的对象。

OC 类的认识

     类的设计必须关心三样事物:

① 类名

② 属性

③ 行为

类名:所有的名词都是类名,且类名的第一个字母必须大写。

如果类名有多个名词,要使用驼峰标示。

属性:代表这个类在创建出来所拥有的的属性。

行为: 这个类所拥有的功能。

类的创建

// 类的声明

@interface  类名

{

// 大括号中间都会写上类的所有属性。

}

// 在这里声明类的行为。

@end

// 类的实现

@implementation 类名

// 在这里对类声明的行为进行实现。

@end

// 利用创建出来的类来创建对象

[行为执行者  行为名称]

例:[Car  new]  这样就简单创建出来了一个OC对象

 第一个oc类

注: oc的类必须通过指针来操作,只能使用这一种方法。

//
//  main.m
//  类的创建

// oc中的 NSObject声明在<Foundation/Foundation.h>中
#import <Foundation/Foundation.h>

// 第一个oc类
// 类名:Car
// 属性:轮胎个数 wheels 、速度 speed
// 方法:跑

// 定义一个函数:需要函数的声明和实现
// 定义一个类: 需要类的声明和实现

// 类的声明
// oc关键自比须以@开头,
// 类名开头的第一个字母必须以大写字母开头,如果有多个单词每个单词的开头必须时大写字母,要使用驼峰标示
// NSObject表示使这个类具备创建对象的能力
// @interface用来声明成员变量/实例变量,和对象方法。
@interface Car: NSObject
{
    // @public可以让外部的指针间接访问成员变量

    @public
    int wheels;
    int speed;

}

/*
 1 oc对象方法必须以减号开头。
 2 对想方法的返回值必须用括号括住。
 3 方法的声明规则:(返回值)方法名:参数
 4 oc方法中括号只括住数据类型
 */
-(void)run;
@end

// 类的实现:
@implementation Car

// 方法的实现:说清楚声明中的方法
-(void)run
{

    NSLog(@"这辆车跑起来了");
}

@end

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

    // oc中只能通过类来创建对象
    // 在oc中想要只想一些行为就先写一个[行为执行者 行为名称]
    // oc中创建的对象只能通过指针来操作
    // [Car new]每次都会创建一个新对象,并且会返回新对象本身(对象的地址)
    Car *c1 = [Car new];

    // 通过指针来访问成员变量
    // 给c1指向的类的wheels属性赋值4,
    // 给c1指向的类的speed属性赋值为300;
    c1 -> wheels = 4;
    c1 -> speed = 300;

     // 给c1指向的类发送一条run消息,来调用run方法的实现。
    [c1 run];
       // 要访问类内部的成员变量必须使用指针来访问
    NSLog(@"轮胎个数 = %d,速度为= %d",c1 ->wheels,c1 ->speed);

    return 0;
}

注意点:

//  main.m
//  第二个oc类
//
//  Created by Apple on 15-3-16.
//  Copyright (c) 2015年 Apple. All rights reserved.
//

/*
     类名: person
    属性 : 年龄、体重
    行为: 跑
 */
#import <Foundation/Foundation.h>

// 一个@interface必须对应一个@end  中间不可以进行嵌套定义
// 声明和实现必须写在对应位置
// 成员变量不允许初始化
// 成员变量不允许使用static修饰
// 类的实现可以写在mian函数后面,但是声明必须写在main函数前面进行声明
@interface Person : NSObject
{

    @public
    int age;
    double weight;
}

- (void)run;
@end

@implementation Person

- (void)run
{
    // 在这里访问的成员变量是那个对象调用,就访问哪个对象内部的成员变量
    NSLog(@"这个年龄为%d体重为%f的人跑起来了",age,weight);
}

@end

int main()
{
    // 类在创建过程中只会加载一次
    // 创建的对象都会有自身的成员变量、
    // 每个对象本身都会有一个isa指针,指向本身的类。
    //
    Person *p = [Person new];
    p->age = 20;
    p->weight = 1.75;

    // 方法在调用过程中会通过isa指针去类里面寻找对应的方法,
    [p run];

    Person *p1 = [Person new];
    p1->age = 30;
    p1->weight = 2.00;
    [p1 run];

        return 0;
}

注意点 ①  成员变量和属性必须写在@interface 和 @end中间。

②   成员变量不允许初始化 。

③   成员变量不允许使用static修饰 。

④   类的实现可以写在mian函数后面,但是声明必须写在main函数前面进行声明。

类中方法和函数的区别:

方法: ① 对象方法都是以减号 - 开头。

② 对象方法必须写在@interface和@end之间

对象方法的实现必须写在@implementation和@end之间

③ 对象方法只能由对象调用。

④ 对象方法的类都归对象所有。

函数: ① 函数能写在程序中的任何位置,函数归文件所有。

② 函数调用不能依赖对象。

③ 函数内部不能直接通过成员变量名访问某个对象的成员变量。

时间: 2024-10-01 23:31:44

《黑吗程序员》OC的认识和第一个OC类的相关文章

漫谈程序员系列:她发现了一个Bug……

更多文章请访问"漫谈程序员"专栏.

漫谈程序员系列:噢,我是一个鬼问题!

程序员(软件开发工程师)有很多别称,比如"程序猿"."码农"."代码工人"."码字猴"等等,都是幽默的阿猿们自黑的结果.这些个别称,指出了一个不争的事实:程序员要写代码.然而,被遮盖的问题是:程序员写代码的目的. 程序员的职责是解决问题 软件的目的是解决生活和生产过程中的问题,为人们带来便利,提高生产力和生产率. 程序员生产软件,所以,程序员的终极目的是用软件来解决自己和他人生活中的问题.这是程序员的职责,而写代码,不过是解决

你假装自己有女朋友,但是程序员用Python自己造了一个女朋

520这一天,也是网络情人节.就在那天,如果没有女朋友的自己,如何假装自己是有朋友的!如何在朋友圈"秀恩爱" 虽然520过去了,但是小编在这里收集了很多"秀恩爱"的姿势,等到七夕如果你还是一个人的话,那么就有用了,不过小编还是祝你早日找到他(她) 女生版: 很有感觉有木有~~ 男生版: 其实这些都是小意思啦~~ 这些都是假装自己有女朋友/男朋友 那么程序员是如何"秀恩爱"呢? 那么今天就用Python制作一个"女朋友". 运行

程序员必备技能——怎样快速接手一个项目

作为一个程序员,我们很少能从头到尾参与一个新项目的开发.如果你经常开发的是新项目,那你真是太幸福了. 更多的情况是半路进入一个项目组进行开发,或者是有其他同事离职了,之前由他维护的系统转交给你维护. 还有一种情况就是领导不知道从哪里弄过来一个系统和一堆文档,然后就直接就把系统交给你了维护了. 遇到以上几种情况我们怎样才能快速熟悉上手项目,应对生产问题呢?下面是我自己在工作中的一点总结,希望能对大家有所帮助. 资料要要全 当你接手一个新项目(别人的项目)的时候,你要第一时间向把项目移交给你的人要到

Java程序员的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

计划按如下顺序完成这篇笔记: 1.    理念. 2.    属性复制和继承. 3.    this/call/apply. 4.    闭包/getter/setter. 5.    prototype. 6.    面向对象模拟. 7.    jQuery基本机制. 8.    jQuery选择器. 9.    jQuery工具方法. 10.    jQuery-在"类"层面扩展. 11.    jQuery-在"对象"层面扩展. 12.    jQuery-扩

【黑马程序员】-Java基础学习-输出一个空心菱形

1 package test; 2 3 /** 4 * 内容是输出一个空心菱形 5 * @author 瞎猫碰到死老虎 6 * 7 */ 8 9 public class linXing { 10 11 public static void main(String[] args) { 12 int n=15; 13 lingxing(n); 14 15 } 16 17 //输出一个n行的菱形 18 public static void lingxing(int n){ 19 //先输出上半部分

程序员学英语--毕业后的第一个月

俗话说,三天打鱼两天晒网,学习英语需要坚持,可是没有如果没有理由,没有乐趣,你怎么坚持!虽说良药苦口,但怎么着也对治病有好处.所以我们的英语最重要就是找个兴趣!学习英语快三年了.怎么就没有兴趣呢.其实我们一直在强迫着自己学习.后来我们一次师徒会上,我的师傅说,学好英语,以后工作就多了一条路,可以到外企中工作,IT方面,外企有很多值得我们学习的东西.不光是技术,而且各种待遇和环境都好.想想这些,心里顿时就感觉高兴,喜欢学英语,还想把英语学好的种种想法和冲动! 很多事情坚持下去不是很难,可是没有一个

android studio 程序员有福了—从layout自动生成viewholder类

狂点这里下载 超级牛逼的插件啊,比那些使用SparseArray的强太多了! 在android studio 1.0上测试,没有问题. 不说了直接说功能 Android Toolbox Plugin for IDEA.? Supported features: Create ViewHolder/ViewPresenter from layout.xml Generates ButterKnife annotations, if ButterKnife presents in project d

黑马程序员— OC基本语法、类和对象、三大特性

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一讲     OC简介及基本语法 Objective-C简称OC是在C语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,也就是可以在OC代码中混入C语言代码,甚至是C++代码.可以使用OC开发Mac OS X平台和IOS平台的应用程序.简单的介绍了一下OC,下面我们来看看OC的基本语法,学习OC之前我们先学习了C语言,因为OC是在C语言的基础上的一门开发语言,因此OC的很多基本语法