黑马程序员———OC第一天(类和对象)

本文介绍了Android开发、Java培训、iOS培训、.NET培训等内容,并详细解释了OC语言的基本概念,包括关键字、字符串表示、数据类型、面向对象思想、方法设计及创建类和对象的过程。同时,对比了面向过程和面向对象思想的区别,并提供了创建类和方法的示例。
------- Android培训Java培训IOS培训.NET培训 期待与您交流! ----------


一、OC简介

1.OC是在C语言的基础上,增加了一层最小的面向对象语法

2.完全兼容C语言

3.可以再OC代码中混入C语言代码,甚至是C++代码

对于2,3 两点如何理解呢?

新建一个.m的文件(注:OC文件的后缀为.m)在这个.m中你可以用你再学习C语言中学过的语法和知识,编译、链接、运行完全没有问题。

// 完全没有问题
#include <stdio.h>
int main()
{
    printf("第1个OC程序\n");
    return 0;
}

不过如果你在一个.c的文件中,写上一大推OC中用到得知识,就会报错,这一点需要注意。所以第2点可以这么理解,OC是完全兼容C语言的,但是C语言不兼容OC。

二、OC语法预览

1.关键字

OC中关键字基本都是以@开头的比方说:@interface,@end,@implementation,@public 等等

2.字符串以@开头

比如@"Hello"是OC字符串,而"Hello"是C语言中的字符串

3.数据类型

就基本类型而言,OC比C多了一个BOOL类型,复杂数据类型,如结构体、枚举,C语言中有的OC中也有。

4.NSLog与printf的区别

NSLog是OC中的输出函数,printf是C语言中的输出函数。首先就他们的大小写就有区别,NSLog前3个字母大写,printf都是小写。第二点就是NSLog自动换行,而printf换行得使用'\n'。第三点就是NSLog的参数是OC字符串得加上@,printf中的字符串是C语言字符串。最后一点就是是用NSLog需要#import <Foundation/Foundation.h>,使用printf需要 #include <stdio.h>。

5.#import的作用

a)跟#include 一样,是用来拷贝某个文件的内荣

b)可以自动防止文件内容被拷贝多次,也就是头文件中不用加入下面的预处理指令了

#ifndef  _STDIO_H
#define _STDIO_H
#endif

三、面向对象和面向过程思想

1)区别分析

a)面向过程关注的是解决问题需要哪些步骤,面向对象关注的是解决问题需要哪些对象

比如有这么个例子: 以用电脑听歌为例子

1⃣️面向过程实现的是: 先打开电脑,然后播放电脑中的歌曲,最后关闭电脑

2⃣️面向对象实现的是:对于一个电脑对象,调用它的开机,播放歌曲,关机方法


2)需要设计哪些类,如何设计类

1.类的设计只关心(类名,属性,行为)

2.一般名词都是类

3.拥有相同(或者类似)属性和行为的对象都可以抽象出一个类


3)OC中创建类和对象

// 类的声明
@interface Car : NSObject
{
@public
    int wheels; // 多少个轮子
    int speed; // 时速
}
// 方法的定义
- (void)run;
@end
// 类的实现
@implementation Car

// 方法的实现
- (void) run
{
    NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed);
}
@end
1.类的声明用到了关键字@interface、@end,类的实现用到了关键字@implementation、@end(注:@end不能省)。

2.一般都是通过指针来间接访问一个对象,创建一个对象的方法是[类名  new]

3.@interface的大括号{}中声明类的成员变量(实例变量)默认值为0,跟C语言中的全局变量一样。

4.@public可以让成员变量被外界访问

5.加上:NSObject的目的是让Car类具备创建对象的能力(其实:是继承的意思,NSObject也是一个类,基类)

四、方法

1)不带参数的方法

a.设计一个返回PI的方法

// 方法声明
- (double)pi;
// 方法实现
- (double)pi
{
    return 3.14;
}


2)带参数的方法

a.设计一个计算平方的方法

// 方法声明
- (double)square:(double)number;
// 方法实现
- (double)square:(double)number
{
    return number * number;
}

b.设计一个计算和的方法
// 方法声明
- (double)sumOfNum1:(double)num1 andNum2:(double)num2;
// 方法实现
- (double)sumOfNum1:(double)num1 andNum2:(double)num2
{
    return num1 + num2;
}
3)总结

a.OC中方法不允许同名

b.:也是方法的一部分

c.有多少个参数就有多少个:

d.从第二个参数开始冒号之前要加上对应的参数名作为描述

e.方法中的小括号()是用来将类型括起来的

f.对象方法得用-开头,类方法得用+开头




代码下载地址: https://pan.quark.cn/s/a4b39357ea24 在计算机视觉技术中,数据集扮演着训练评估模型的核心角色。Labelme作为一个广受欢迎的开源工具,能够支持用户以交互方式对图像进行标注,而COCO(Common Objects in Context)则是一种被广泛采纳的数据集标准格式,适用于包括物体检测、图像分割在内的多种任务。本文将详细阐述如何将Labelme生成的标注数据转换为COCO数据集的标准格式。 Labelme标注的图像在输出为JSON格式时,会包含以下核心内容: 1. `version`: 指明JSON文件的版本信息。 2. `flags`: 目前未定义或保持为空,预留用于未来的功能扩展。 3. `shapes`: 列表形式存储对象的形状信息,每个形状项包含`label`(对象别名称),`points`(构成对象边缘的多边形顶点),以及`shape_type`(通常为“polygon”)。 4. `imagePath``imageData`: 提供原始图像的存储路径二进制数据,便于后续图像的还原。 5. `imageHeight``imageWidth`: 明确标注图像的垂直水平尺寸。 COCO数据集的标准格式中定义了三种主要的标注型: 1. Object instances(目标实例):主要用于执行物体检测任务。 2. Object keypoints(目标上的关键点):适用于人体姿态估计相关应用。 3. Image captions(看图说话):用于生成图像的文本描述。 COCO的JSON结构中包含以下基本组成部分: 1. `images`:记录图像的基本属性,包括`height`(高度)、`...
内容概要:本文围绕基于Basisformer模型的时间序列锂离子电池SOC(State of Charge,荷电状态)预测展开研究,利用PyTorch深度学习框架构建并训练模型,旨在提升锂电池SOC估计的准确性与鲁棒性。该方法融合Transformer架构的核心机制,通过引入基函数(Basis)分解策略,有效捕捉电池充放电过程中长时序、非线性动态特征,增强模型对复杂工况的适应能力。研究不仅详细阐述了Basisformer的网络结构设计、注意力机制优化与训练流程,还提供了完整的Python代码实现方案,涵盖数据预处理、模型搭建、损失函数定义、训练验证及结果可视化等环节,便于科研人员快速复现、调优并拓展至其他电池状态预测任务。; 适合人群:具备一定深度学习与Python编程基础,熟悉PyTorch框架,从事电池管理系统(BMS)、新能源汽车、储能系统、智能传感等领域的高校研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于动力电池与储能系统的实时SOC估算模块,提升系统安全性与能量利用效率;②作为学术研究的基础模型,用于复现、改进基于Transformer的时间序列预测方法在电化学系统中的应用;③为数据驱动的电池健康状态(SOH)、剩余使用寿命(RUL)联合估计提供可扩展的技术框架。; 阅读建议:建议读者结合所提供的代码与公开电池数据集(如NASA、CALCE等)进行动手实践,深入理解模型的输入输出结构与时序建模逻辑,同时可尝试引入温度、老化周期等多维特征,或融合物理模型构建混合预测架构,以进一步提升预测精度与泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值