以下代码为了充分学习理解 类与对象

类与对象的定义 

  类就是将事物的共有属性和方法抽离出来形成的;类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。

  对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。

类对象的关系

  类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
 /*
学生
成员变量:性别、生日、体重、最喜欢的颜色、养的狗(体重、毛色、吃、跑)
方法:吃、跑步、遛狗、喂狗 */ #import <Foundation/Foundation.h> // 性别枚举
typedef enum {// 枚举类型常量一般是以枚举名开头(规范)
SexMan, //
SexWoman //
} Sex; // 生日结构体
typedef struct {
int year;
int month;
int day;
} Date; // 颜色结构体
typedef enum {
ColorBlack,//
ColorRed, //
ColorGreen //
} Color; // Dog类的声明
@interface Dog : NSObject
{// 成员变量
@public
double weight; //体重
Color curColor;//毛色
}
// 方法声明
- (void)eat;
- (void)run;
@end // Dog类的实现
@implementation Dog
// 狗吃东西的方法
- (void)eat {
weight++;
NSLog(@"吃完这次后的体重是%.2f", weight);
}
// 狗跑的方法
- (void)run {
weight--;
NSLog(@"跑完这次后的体重是%.2f", weight);
}
@end // Student类的声明
@interface Student : NSObject
{
@public
char *name; // 名字
Sex sex; // 性别
Date birthday; // 生日
double weight; // 体重(kg)
Color favColor; // 最喜欢的颜色
Dog *dog; // 养的狗
}
// 人吃东西的方法声明
- (void)eat;
// 人跑步的方法声明
- (void)run;
// 输出人的信息方法声明
- (void)print;
// 人遛狗方法声明
- (void)liuDog;
// 人喂狗方法声明
- (void)feed;
@end // Student类的实现
@implementation Student // 人吃东西的方法实现
- (void)eat {
weight++;
NSLog(@"狗吃完这次后的体重是%.2f", weight);
} // 人跑步的方法实现
- (void)run {
weight--;
NSLog(@"狗跑完这次后的体重是%.2f", weight);
} // 输出人的信息方法实现
- (void)print {
NSLog(@"名字 = %s,性别 = %d,生日 = %d-%d-%d,体重 = %.2f,喜欢的颜色 = %d", name, sex, birthday.year, birthday.month, birthday.day, weight, favColor);
} // 人遛狗方法实现
- (void)liuDog {
// 让狗跑起来(调用狗的run方法)
[dog run];
} // 人喂狗方法实现
- (void)feed {
// 让狗吃东西(调用狗的eat方法)
[dog eat];
}
@end int main() { // 创建一个学生对象
Student *s = [Student new]; // 人的属性赋值
s->name = "Jack";
s->weight = ;
s->sex = SexMan;
// 生日;
/*
s->birthday.year = 2011;
s->birthday.month = 9;
s->birthday.day = 10;
*/
Date d = {, , };
s->birthday = d;
// 喜欢的颜色
s->favColor = ColorRed; // 人的方法调用
[s eat];
[s eat];
[s run];
[s run];
[s print]; // 创建一个狗的对象
Dog *dog = [Dog new]; // 狗的属性赋值
dog->weight = ;
dog->curColor = ColorBlack; // 将狗对象赋值给人的 狗属性
s->dog = dog; // 人的方法调用
[s liuDog];
[s feed]; return ;
}

iOS之03-类的合理设计的更多相关文章

  1. iOS类的合理设计,面向对象思想

    每天更新的东西可能有反复的内容.当时每一部分的知识点是不同的,须要大家认真阅读 这里介绍了iOS类的合理设计.面向对象思想 main.m #import <Foundation/Foundati ...

  2. Atitit.java c#这类编程语言的设计失败点attilax总结

    Atitit.java c#这类编程语言的设计失败点attilax总结 1. Npe1 2. Api粒度过小而又没有提供最常用模式1 3. checked exception(jeig n jyejy ...

  3. C++ 类族的设计

     - 类族的设计]    按以下的提示,由基类的设计和测试开始,逐渐地完成各个类的设计,求出圆格柱体的表面积.体积并输出并且完成要求的计算任务:    (1)先建立一个Point(点)类,包含数据成员 ...

  4. C++套接字类CxUdpSocket的设计

    C++套接字类CxUdpSocket的设计 这是一个小巧的C++套接字类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣能),个人习惯而已,如有雷同,纯属巧合. CxUdpS ...

  5. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087

  6. IOS上传图片方法类

    IOS上传图片方法类   iPhone开发中遇到上传图片问题,找到多资料,最终封装了一个类,请大家指点,代码如下 // // RequestPostUploadHelper.h // demodes ...

  7. iOS文件处理类

    iOS文件处理类 这是一个用来简化iOS中关于文件操作的一个类,所有方法都为类方法. Source File.h // // File.h // FileManager // // http://ho ...

  8. 在java中String类为什么要设计成final?

    大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...

  9. C# 文件里的类不能进行设计,因此未能为该文件显示设计器

    C# 文件里的类不能进行设计,因此未能为该文件显示设计器 vs 一直打不开设计界面  仅仅能查看代码界面  这时候须要查看  代码中  是不是 从 form    继承 假设不是 窗口类型 改为 fo ...

  10. C++第11周(春)项目4 - 类族的设计

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目4 - 类族的设计]按下面的提示,由基类 ...

随机推荐

  1. Mysql之取消主从复制

    Mysql5.7 Mysql取消主从复制很简单.只需在其要终止同步的Server上[一般是Slave]执行下面语句即可: stop slave; reset slave; 如图: .

  2. Mysql手册—SQLStatementSyntax

    14.1.1 ALTER DATABASE Syntax,可用于修改数据库字符集和校验规则 查看校验规则可如下: 由于utf8的校验规则都是ci(case insensitive),所以是不区分大小写 ...

  3. [Android]在代码混淆中关闭 Log

    -assumenosideeffects class android.util.Log{ public static *** d(...); public static *** e(...); }

  4. hdu1162(最小生成树 prim or kruscal)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 意义:给出一些点,用线问使所有点直接或间接连通,需要多长: 思路:裸最小生成树: 法1: pri ...

  5. mybatis配置问题

    //当构造函数有多个参数时,可以使用constructor-arg标签的index属性,index属性的值从0开始. <bean id="sqlSession" class= ...

  6. jsp 过滤器 Filter 配置

    .如果要映射过滤应用程序中所有资源: <filter>    <filter-name>loggerfilter</filter-name>    <filt ...

  7. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  8. mysql中select五种子句和统计函数

    select 五种子句顺序 where 条件 group by 分组 having 把结果进行再次筛选 order by  排序 limit  取出条目 统计函数  max(列名)  求最大 min( ...

  9. Loadrunner上传与下载文件脚本

    一. 上传脚本 Action() { int uploadImgStatus = 0; //获取上传产品图ID web_reg_save_param_ex("ParamName=imgRan ...

  10. ASP.NET多线程下使用HttpContext.Current为null解决方案 2015-01-22 15:23 349人阅读 评论(0) 收藏

    问题一:多线程下获取文件绝对路径 当我们使用HttpContext.Current.Server.MapPath(strPath)获取绝对路径时HttpContext.Current为null,解决办 ...