黑马程序员——开发技巧

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


发技巧

NSString:字符串处理类。存在于Foundation框架里面的。继承了NSObject。

创建字符串对象

#import <Foundation/Foundation.h>
int main()
{
 // 最简单的创建字符串的方式
NSString *str = @"itcast";    // @”itcast”是一个对象,这样就直接创建了对象str并且可以操纵itcast
NSLog(@”这个字符串是%@”, str);    // 字符串用%@
int size = [str length];    <span style="white-space:pre">		</span>// length方法,计算字数长度(包括空格)。例如“黑马”是两个字长,很实用

int age = 15;
int no = 10;
NSSring *newStr = [NSString  stringWithFormat:@”My age is %d ang no is %d”, age, no];  //  输出可变化的age和no。
NSLog(@"--------%@", newStr);

return 0;
}

OC练习

1、设计一个类Point2D,用来表示二维平面中的某店

   -1、属性

* double _x

* double _y

  -2、方法

   * 属性相应的set和get方法

* 设计一个对象方法同时设置x和y

* 设计一个对象方法计算跟其他点的距离

* 设计一个类方法计算两个点之间的距离

-3、提示

  * C语言的math.h中有个函数:double pow(double n, double m); 计算n的m次方

 * C语言中的math.h中有个函数:double sqrt(double n); 计算根号n的值


#import <Foundation/Foundation.h>
#import <math.h>
@interface Point2D : NSObiect
{
double _x;
double _y;
}
- (void)setX:(double)x;
- (double)x;
- (void)setX:(double)x andY:(double)y;
- (double)distanceWithOther:(Point2D *)other;
+ (double)distanceBetweenPoint1:(Point2D *)p1 andPoint2:(Point2D *)p2;
@end
@implementation Point2D
- (void)setX:(double)x
{
   _x = x;
}
- (double)x
{
   return _x;
}

- (void)setX:(double)x andY:(double)y
{
[self setX:x];  /* 这样设置的好处:如果赋值是对x和y有限制,调用set方法可以准确的  限制。若是 _x = x; 则不能体现在setX:x方法中对_x的限制性。*/

	[self setY:y]; 
}

- (double)distanceWithOther:(Point2D *)other
{
	/* 第一种算法:
	//x1 – x2    double xCha = _x – [other x];    _x也可以用[self x]
	// (x1 – x2)的平方    double xChaPF = pow(xCha, 2);
	//y1 – y2    double yCha = _y – [other y];
	// (y1 – y2)的平方    double yChaPF = pow(yCha, 2);
	// return sqrt(xChaPF + yChaPF);  开根号
	*/
	// 第二种写法,直接调用类方法
return [Point2D distanceBetweenPoint1:self andPoint2:other];
}
+ (double)distanceBetweenPoint1:(Point2D *)p1 andPoint2:(Point2D *)p2
{
	// x1 – x2    
double xCha = [p1 x] – [p2 x];
	 // (x1 – x2)的平方    
double xChaPF = pow(xCha, 2);
	// y1 – y2    
double yCha = [p1 y] – [p2 y];
	// (y1 – y2)的平方    
double yChaPF = pow(yCha, 2);
 
// 求距离,开根号
return sqrt(xChaPF + yChaPF); 

/* 如果对象方法里面计算了距离,类方法调用对象方法则          
return [p1 distanceWithOther:p2]; 或者return [p2 distanceWithOther:p1];  */

}
@end
  
int main()
{
Point2D *p1 = [Point2D new];
Point2D *p2 = [Point2D new];
[p1 setX:10 andY:20];
[p2 setX:13 andY:16];
double d = [p1 distanceWithOther:p2];
double d2 = [Point2D distanceBetweenPoint1:p1 andPoint2:p2];  // 以上两个都输出距离
NSLog(@"%f", d);
	return 0;
}


 2、练习:(运用了组合和上题中组合)

设计一个Circle,用来表示二维平面中的圆

 -1、属性

       *double _radius  (半径)

       *Point2D *_point  (圆心)

 -2、方法

       * 属性相应的set和get方法

       *设计一个对象判断跟其他圆是否相交(相交返回YES,否则返回NO)

       *设计一个类方法判断两个圆是否相交(相交返回YES,否则返回NO)

#import <Foundation/Foundation.h>
#import <math.h>
@interface Circle : NSObiect
{
// 半径
double _radius;
// 圆心,和上题组合
Point2D *point;
}
// 半径的set和get方法
- (void)setRadius:(double)radius;
- (double)radius;
// 圆心的set和get方法
- (void)setPoint:(Point2D *)point;
- (Point2D *)point;

// 判断是否相交
// 返回值是BOOL类型的,方法名一般以is开头
- (BOOL)isInteractWithOther:(Circle *)other;
// 类方法判断是否相交
+ (BOOL)isInteractBetweenCircle1:(Circle *)c1 andCircle2:(Circle *)c2;
@end

@implementation Circle
- (void)setRadius:(double)radius
{
	_radius = radius;
}
- (double)radius;
{
	return _radius;
}

- (void)setPoint:(Point2D *)point
{
	_point = point;
}
- (Point2D *)point
{
	return _point;
}
- (BOOL)isInteractWithOther:(Circle *)other
{
	// 圆心距离小于半径和就相交
	Point2D *p1 = [self point];
	Point2D *p2 = [other point];
	// 两个圆心的距离
double distance = [p1 distanceWithOther:p2];
	// 两个半径的和
double radiusSum = [self radius] + [other radius];
	return distance < radiusSum;
}
// 类方法判断是否相交
+ (BOOL)isInteractBetweenCircle1:(Circle *)c1 andCircle2:(Circle *)c2
{
	return [c1 isInteractWithOther:c2];

}
@end


int main()
{
	// 圆的对象
	Circle *c1 = [Circle new];
 	[c1 setRadius:1];
	// 圆心对象1
	Point2D *p1 = [Point2D new];   // 先创建圆心对象
	[p1 setX:10 andY:15];
	[c1 setPoint:p1];     // 把圆心对象占为己有
	// [[c1 point] setX:12]运行这行代码圆的x变为12
 
// 圆的对象2
	Circle *c2 = [Circle new];
   [c2 setRadius:5];
	// 圆心对象2
	Point2D *p2 = [Point2D new];
	[p2 setX:3 andY:8];
	[c2 setPoint:p2];
  BooL b1 = [c1 isInteractWithOther:c2];
	NSLog(@”%d”, b1);
return 0;
}

多文件开发:

1、定义一个类分2个文件:.h声明文件、.m实现文件

.h : 成员变量、方法的声明

.m :方法的实现

 

2、如果想使用某一个类,只需要#import类的.h文件即可

   






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员的tb_brand是指在JavaWeb基础教程中创建的一个表。这个表是用来存储品牌信息的,具体的表结构和数据类型需要和JavaBean类中的成员变量保持一致。\[1\]在这个教程中,使用了Maven来构建项目,并且使用了MyBatis作为持久层框架,通过配置pom.xml文件来引入相关依赖。\[2\] Maven是一个用于管理和构建Java项目的工具,它提供了一套标准化的项目结构、构建流程和依赖管理机制。\[3\] #### 引用[.reference_title] - *1* [【JAVAWEB开发黑马程序员java web案例资料(含Element的删除与修改)](https://blog.csdn.net/aasd23/article/details/126940147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!](https://blog.csdn.net/qq_57383364/article/details/128103058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JavaWeb——黑马程序员课程笔记](https://blog.csdn.net/King_ZACC/article/details/128573804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值