//
// MyClass.h
// OC2_班级类
//
// Created by zhangxueming on 15/6/12.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Student.h" @interface MyClass : NSObject
{
NSString * _className;
NSMutableArray * _stuList;
} - (id)initWithClassName:(NSString *)name;
- (void)setClassName:(NSString *)name;
- (NSString*)className;
- (void)addStudent:(Student *)student;
- (void)addStudent:(Student *)student atIndex:(NSInteger) index;
- (void)removeStudent:(Student *)student;
- (void)removeStudentAtIndex:(NSInteger) index;
- (void)replaceStudent:(Student *)student atIndex:(NSInteger) index;
- (void)showStuList;
- (void)sortedByNumber;//按照学号升序
- (void)sortedByScore;//按照分数降序
- (void)sortedByName;//按照名字降序 + (void)testMyClass; @end
//
// MyClass.m
// OC2_班级类
//
// Created by zhangxueming on 15/6/12.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "MyClass.h" @implementation MyClass - (id)initWithClassName:(NSString *)name
{
if (self = [super init]) {
_className = name;
_stuList = [NSMutableArray array];
}
return self;
}
- (void)setClassName:(NSString *)name
{
_className = name;
} - (NSString*)className
{
return _className;
} - (void)addStudent:(Student *)student
{
if (![_stuList containsObject:student]) {
[_stuList addObject:student];
}
} - (void)addStudent:(Student *)student atIndex:(NSInteger) index
{
[_stuList insertObject:student atIndex:index];
} - (void)removeStudent:(Student *)student
{
[_stuList removeObject:student];
} - (void)removeStudentAtIndex:(NSInteger) index
{
[_stuList removeObjectAtIndex:index];
} - (void)replaceStudent:(Student *)student atIndex:(NSInteger) index
{
[_stuList replaceObjectAtIndex:index withObject:student];
} //遍历学生数组
- (void)showStuList
{
for (Student *stu in _stuList) {
[stu printStudent];
}
} - (void)sortedByNumber//按照学号升序
{
[_stuList sortUsingSelector:@selector(isSortByNum:)];
}
- (void)sortedByScore//按照分数降序
{
[_stuList sortUsingSelector:@selector(isSortByScore:)];
}
- (void)sortedByName//按照名字降序
{
[_stuList sortUsingSelector:@selector(isSortByName:)];
} + (void)testMyClass
{
MyClass *ios1509 = [[MyClass alloc] initWithClassName:@"ios1509"];
for (NSInteger i=; i<; i++) {
Student *stu = [[Student alloc] initWithName:[NSString stringWithFormat:@"name%d", arc4random()%+] number:arc4random()%+ score:arc4random()%];
[ios1509 addStudent:stu];
}
NSLog(@"排序前");
[ios1509 showStuList]; NSLog(@"分数排序后");
[ios1509 sortedByScore];
[ios1509 showStuList]; NSLog(@"学号排序后");
[ios1509 sortedByNumber];
[ios1509 showStuList]; NSLog(@"名字排序后");
[ios1509 sortedByName];
[ios1509 showStuList];
} @end
//
// Student.h
// OC2_班级类
//
// Created by zhangxueming on 15/6/12.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> @interface Student : NSObject
{
NSString * _name;
NSInteger _num;
NSInteger _score;
} - (id)initWithName:(NSString *)name number:(NSInteger)num score:(NSInteger)score;
- (void)setName:(NSString *)name;
- (NSString *)name;
- (void)setNum:(NSInteger)num;
- (NSInteger)num;
- (void)setScore:(NSInteger)score;
- (NSInteger)score; - (BOOL)isSortByScore:(Student *)aStudent;
- (BOOL)isSortByNum:(Student *)aStudent;
- (NSComparisonResult)isSortByName:(Student *)aStudent; - (void)printStudent; @end
//
// Student.m
// OC2_班级类
//
// Created by zhangxueming on 15/6/12.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "Student.h" @implementation Student - (id)initWithName:(NSString *)name number:(NSInteger)num score:(NSInteger)score
{
if(self = [super init])
{
_name = name;
_num = num;
_score = score;
}
return self;
}
- (void)setName:(NSString *)name
{
_name = name;
} - (NSString *)name
{
return _name;
} - (void)setNum:(NSInteger)num
{
_num = num;
} - (NSInteger)num
{
return _num;
} - (void)setScore:(NSInteger)score
{
_score = score;
} - (NSInteger)score
{
return _score;
} - (BOOL)isSortByScore:(Student *)aStudent
{
if ([self score]>[aStudent score]) {
return YES;
}
return NO;
} - (BOOL)isSortByNum:(Student *)aStudent
{
if ([self num] > [aStudent num]) {
return YES;
}
return NO;
} - (NSComparisonResult)isSortByName:(Student *)aStudent
{
return [[self name] compare:[aStudent name]];
} - (void)printStudent
{
NSLog(@"name = %@ num = %li score = %li", [self name], [self num], [self score]);
} @end
//
// main.m
// OC2_班级类
//
// Created by zhangxueming on 15/6/12.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "MyClass.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
//NSLog(@"Hello, World!");
[MyClass testMyClass];
}
return ;
}

OC班级类的更多相关文章

  1. iOS之02-第一个OC的类

    OC是一门面向对象的语言,因此它也有类.对象.静态\动态方法.成员变量的概念.这讲就来创建第一个OC的类. 第一个类的源码: /* 人 类名:Person 属性(成员变量\实例变量):体重.年龄 行为 ...

  2. OC语言类的本质和分类

    OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件 ...

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

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  4. 李洪强iOS开发之OC语言类的深入和分类

    OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件 ...

  5. 【Objective-C】0-第一个OC的类

    OC是一门面向对象的语言,因此它也有类.对象.静态\动态方法.成员变量的概念.这讲就来创建第一个OC的类. 一.语法简介 1.类 在Java中,我们用1个.java文件就可以描述清楚一个类:在OC中, ...

  6. OC基础 类的三大特性

    OC基础  类的三大特性 OC的类和JAVA一样,都有三大特性:继承,封装,多态,那么我们就来看一下OC中类的三大特性. 1.继承 继承的特点: (1)子类从父类继承了属性和方法. (2)子类独有的属 ...

  7. OC分类(类目/类别) 和 类扩展 - 全解析

    OC分类(类目/类别) 和 类扩展 - 全解析   具体见: oschina -> MyDemo -> 011.FoundationLog-OC分类剖析 http://blog.csdn. ...

  8. 关于swift语言中导入OC三方类找不到头文件的解决方法

    首先我遇到的问题是这样的: 我之前封装的OC类,我导入现在的swift工程中,然后建立桥接文件,在Swift的控制器中可以找到这个OC写的东西. 但是问题来了,当你使用cocoapods导入的OC三方 ...

  9. 第一个OC的类

    来源:http://www.cnblogs.com/mjios/archive/2013/04/06/3002814.html 本文目录 一.语法简介 二.用Xcode创建第一个OC的类 三.第一个类 ...

随机推荐

  1. oracle 在表中有数据的情况下修改表字段类型或缩小长度

    分享自己一些常用的sql语句给大家 偶尔我们需要在已有表,并且有数据的情况下,修改其某个字段的类型或缩短他的长度,但是因为表中有数据,所以不可以直接修改,需要换个思路. //建立测试表,可跳过(善于应 ...

  2. .Net 项目常见疑难杂症

    1.A项目引用 B项目 B项目引用C.dll 同时 A也必须引用 C.dll 则 A中引用的C的版本 必须和 B中引用C的版本相同 否则就会出现下面这类问题:解决办法 :同步A B项目中引用C的版本一 ...

  3. 关于 javascript:void(0) 的使用

    在 Wep App 中,我们经常需要在 JavaScript 中处理链接的点击.因此,我们希望用户点击 <a> 元素时阻止它的默认行为.此时我们可以用很多不同的方法来处理.例如: < ...

  4. java基础三种循环的使用及区别

    摘要:Java新人初学时自己的一些理解,大神们路过勿喷,有什么说的不对不足的地方希望能给予指点指点,如果觉得可以的话,希望可以点一个赞,嘿嘿,在这里先谢了.在这里我主要说的是初学时用到的Java三个循 ...

  5. java反射快速入门(一)

    本文会从以下几个方面讲起 ① 反射的简单解释 ② java反射的API接口 及 demo ③ 反射的优缺点.应用场景 一.什么是反射? java反射:在程序运行中动态获取类的信息,及动态调用对象的方法 ...

  6. poj 1904 King's Quest tarjan求二分图的所有可选最大匹配边

    因为是完美匹配,所以每个点都已经匹配了,那么如果要选择一条别的边,增光路的最后必定找到原来所匹配的点,加上匹配的边,那么就是一个环.所以可选边在一个强连通分量里. #include <iostr ...

  7. poj 1654 Area 多边形面积

    /* poj 1654 Area 多边形面积 题目意思很简单,但是1000000的point开不了 */ #include<stdio.h> #include<math.h> ...

  8. Fast portable non-blocking network programming with Libevent--转

    Learning Libevent Chapter 0: About this document Chapter 1: A tiny introduction to asynchronous IO. ...

  9. window.external.notify() 与 UglifyJS 压缩优化冲突

    近期研究了一下 UglifyJs 对 JS 代码的压缩,发现 UglifyJS 压缩后,无法调用 window.external.notify() 方法,JS 代码如下: function MyNot ...

  10. iOS的崩溃和编译错误

    1. Command /bin/sh failed with exit code 127 这是因为mogenerator找不到路径,stackoverflow给出的答案是: If /usr/local ...