好的,所以我对编程世界很陌生。我已经学习了C作为目标C基础的基础知识。我一直在学习目标C并且我开始熟悉语言,但仍然存在一个问题:
我很难理解为什么有接口和实现文件。公开一部分有什么意义?当我在学习C时,将所有内容都放在一个文件中对我来说更有意义。我认为我的问题在于我无法看到所有内容如何在应用程序中相互交互,因此我尝试了找到某种图表/外行解释,这将有助于我了解用户点击/按下按钮或输入返回给用户的数据和数据的过程如何工作,但搜索没有结果。
总结一下:界面和实现文件的重点是什么以及为什么界面“公共” - 这对用户或其他什么意味着什么?
非常困惑。提前感谢您的帮助。
答案 0 :(得分:1)
标题,如果做得好,可以清楚地说明类的功能,因为它列出了所有类可以做的事情。公共和私人方法鼓励良好的设计。创建类时,您希望它执行某项任务或其他任务。它应该有一些方法来表示它可以在头文件中做的事情,然后在内部它应该有它需要的任何方法,但其他类不应该调用。例如,您可能有一个类来处理和解析几种类型的文件并返回关联类型的对象。您的头文件可能如下所示:
@class DGCFileTypeA, DGCFileTypeB;
@class DGCObjectTypeA, DGCObjectTypeB;
@interface DGCFileParser : NSObject
- (DGCObjectTypeA *)parseFileA:(DGCFileTypeA *)fileA;
- (DGCObjectTypeB *)parseFileB:(DGCFileTypeB *)fileB;
@end
这使得你编写的所有其他东西都需要解析那些类型的文件。您的实现文件看起来像:
#import "DGCFileParser.h"
#import "DGCFileTypeA.h"
#import "DGCFileTypeB.h"
#import "DGCObjectTypeA.h"
#import "DGCObjectTypeB.h"
@implementation DGCFileParser
- (DGCObjectTypeA *)parseFileA:(DGCFileTypeA *)fileA {
NSArray *fileLines = [self fileLinesForFile:fileA];
/// Implementation details ///
return result;
}
- (DGCObjectTypeB *)parseFileB:(DGCFileTypeB *)fileB {
NSArray *fileLines = [self fileLinesForFile:fileB];
/// Implementation details (presumably different than above) ///
return result;
}
- (NSArray *)fileLinesForFile:(DGCFileType *)file {
/// Implementation details on reading lines from a file ///
}
@end
所以现在你有一个你在内部使用但不需要公开的方法,因为没有其他类需要使用它,因为这是解析文件的类。在一个应用程序中,需要解析一个文件并将其传递到这里并获得所需的任何结果,并且该类不需要担心香肠是如何制作的。例如,它并不需要关心将行读入数组中,因为它所关心的只是返回的对象。