黑马程序员--分类


基类接口部分

#import <Foundation/Foundation.h>

@interface Fraction : NSObject 

@property (nonatomic ) int numerator,denominator;

-(void)setTo:(int) n over:(int) d;

-(void)reduce;//约分

-(NSString *)description;//显示方法重写


@end

基类实现部分

//
//  Fraction.m
//  分类
//
//  Created by smartlei on 15/6/8.
//  Copyright (c) 2015年 smartlei. All rights reserved.
//

#import "Fraction.h"

@implementation Fraction

@synthesize  numerator,denominator;

-(void)setTo:(int) n over:(int) d
{
    numerator =n;
    denominator=d;
}
-(void)reduce
{
    int u=numerator;
    int v=denominator;
    int temp;
    
    while (v!=0)
    {
        temp=u%v;
        u=v;
        v=temp;
    }
    numerator/=u;
    denominator/=u;
}

-(NSString *)description
{
    [self reduce];
    return [NSString stringWithFormat:@"%d/%d",numerator,denominator];
}
@end

分类接口集实现可以放在同一个文件中

//
//  FractionMathOps.h
//  分类
//
//  Created by smartlei on 15/6/17.
//  Copyright (c) 2015年 smartlei. All rights reserved.
//

#import "Fraction.h"

//实现Fraction的分类
@interface Fraction (MathOps)

//+
-(Fraction *)add:(Fraction *)f;
//X
-(Fraction *)mul:(Fraction *)f;
//-
-(Fraction *)sub:(Fraction *)f;
//约分
-(Fraction *)div:(Fraction *)f;

@end


//实现部分
@implementation Fraction (MathOps)


//将两个分数相加
//a/b+c/d=(a*d)+(b*C)/db
-(Fraction *)add:(Fraction *)f
{
    //定义临时变量
    Fraction *result=[Fraction new];
    
    result.numerator=(self.numerator*f.denominator)+(self.denominator*f.numerator);
    result.denominator=self.denominator*f.denominator;
    
    [result reduce];
    
    return result;
    
}
//将两个数相乘
-(Fraction *)mul:(Fraction *)f
{
     Fraction *result=[Fraction new];
    result.numerator=(self.numerator*f.numerator);
    result.denominator=self.denominator*f.denominator;
    return result;
}
//两个分数相减
-(Fraction *)sub:(Fraction *)f
{
    Fraction *result=[Fraction new];
    result.numerator=(self.numerator*f.denominator)-(self.denominator*f.numerator);
    result.denominator=self.denominator*f.denominator;
    return result;
}
//两个分数相除
-(Fraction *)div:(Fraction *)f
{
    Fraction *result=[Fraction new];
    result.numerator=(self.numerator*f.denominator);
    result.denominator=self.denominator*f.numerator;
    return result;
}
@end

测试主函数

//
//  main.m
//  分类
//
//  Created by smartlei on 15/6/8.
//  Copyright (c) 2015年 smartlei. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Fraction.h"
#import "FractionMathOps.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Fraction *a=[[Fraction alloc] init];
            [a setTo:5 over:6];
        
        Fraction *b=[[Fraction alloc] init];
            [b setTo:3 over:4];
        
         Fraction *c=[[Fraction alloc] init];
        
        //实现两个数相加
            c=[a add:b];
            NSLog(@"[a add:b]=%@",c);
        //实现两个数相减
        c=[a sub:b];
        NSLog(@"[a sub:b]=%@",c);
        //实现两个分数相乘
        c=[a mul:b];
        NSLog(@"[a mul:b]=%@",c);
        //实现两个分数相除
        c=[a div:b];
        NSLog(@"[a div:b]=%@",c);
      
        
        
    }
    return 0;
}




### 黑马程序员 JavaSE 课程概述 #### 什么是Java? Java是一种广泛使用的面向对象编程语言,具有跨平台特性。它由Sun Microsystems于1995年推出,并迅速成为企业级应用开发的主要技术之一[^1]。 #### 马程序员 JavaSE 基础教程的核心内容 黑马程序员的JavaSE基础教程通常分为多个阶段,逐步深入讲解Java的基础知识和高级特性。以下是该课程的一些核心模块: 1. **Java入门** - 讲解Java的历史背景和发展历程。 - 探讨Java的特点及其与其他编程语言的区别。 2. **集成开发环境(IDEA)** - 学习如何安装并配置IntelliJ IDEA或其他主流IDE。 - 使用IDE创建、运行和调试简单的Java程序。 3. **基础语法** - 数据类型与变量声明。 - 运算符及表达式的使用方法。 - 控制结构如条件语句(if, switch)以及循环(for, while)。 4. **面向对象编程(OOP)** - 类与对象的概念介绍。 - 封装、继承和多态三大特性的实现方式。 - 抽象类与接口的应用场景分析。 5. **异常处理机制** - 异常的基本概念及其分类- try-catch-finally块的作用范围说明。 - 自定义异常的设计原则。 6. **集合框架(Collection Framework)** - List、Set、Map等常用集合类型的比较选择依据。 - Iterator迭代器模式的工作原理详解。 - 并发环境下安全操作集合的方法探讨。 7. **输入输出流(I/O Streams)** - 文件读写基本流程演示。 - 字节流与字符流之间的区别联系解释。 - 缓冲区(Buffered Stream)提高效率的技术手段分享。 8. **多线程(Thread)** - 创建启动新线程的不同途径展示。 - 同步锁(Synchronized Block/Method)防止资源竞争现象发生的重要性强调。 - 线程间通信工具(Condition Variable,Pipe etc.)实际案例剖析。 9. **网络编程(Network Programming)** - Socket套接字基础知识普及。 - 客户端服务器模型(Client-Server Model)构建过程指导。 - HTTP协议请求响应消息格式解析。 10. **数据库连接(JDBC)** - JDBC API主要组成部分功能描述。 - PreparedStatement预编译SQL语句提升性能优势阐述。 - ResultSet结果集遍历技巧总结。 ```java public class HelloWorld { public static void main(String[] args){ System.out.println("欢迎来到黑马程序员Java世界!"); } } ``` 以上仅为部分精选主题概览,具体学习路径还需参照官方文档或者购买正版教材获取更详尽的内容安排。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值