zoukankan      html  css  js  c++  java
  • 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:12];
    
        NSLog(@"name = %@, age = %i", [xiaoHua getName], [xiaoHua getAge]);
    
        Student *xiaoFei = [[Student alloc] initWithName:@"小飞" andAge:20];
        [xiaoFei setName:@"小小飞" andAge:22];
        
        NSLog(@"name = %@, age = %d",[xiaoFei getName], [xiaoFei getAge]);
    }
    
    @end
    
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            
            [Student testStudent];
            
        }
        return 0;
    }
  • 相关阅读:
    python:返回函数,闭包
    对象的行为和数组
    类、对象和包
    Java语言中的程序流程控制
    初识Java,Java语言概述
    有限广播地址与直接广播地址
    H3C模拟器HCL注意事项
    HDLC协议
    NETBIOS的作用
    HP DL380G7 RAID配置
  • 原文地址:https://www.cnblogs.com/0515offer/p/4562978.html
Copyright © 2011-2022 走看看