【IOS開發之Objective-C】書籤管理器項目

來源:互聯網
上載者:User

標籤:objective-c   冒泡排序   找對象   ios開發   儲存   

1.項目

建立一個書籤管理器的項目,可以儲存書籤的網址、中文名、星級、訪問量和許可權資訊,具有增、刪、改、查和排序的功能。

2.找對象,抽象類別

書籤管理器,書籤管理器,書籤管理器……  多讀幾次書是不是就找到了對象,書籤和管理器。書籤包含網址、中文名和星級等資訊;管理器裡面有書籤。那麼我就可以抽象出兩個類了,一個是書籤類,一個是管理器類。

我們在書籤管理器裡面增、刪、改、查和排序書籤,在書籤裡面儲存書籤具有的屬性資料。

3.對象的屬性和行為分析


書籤管理器的儲存關係的分析:

4.類的實現

1.書籤類的實現

#import <Foundation/Foundation.h>//書籤類  儲存書籤具體的資訊/資料@interface BookMark : NSObject{NSString * _url;   //網址NSString * _title; //標題NSUInteger _stars; //星級NSUInteger _vist;  //訪問人數char _level;       //許可權}- (void) setUrl:(NSString *)url;- (void) setTitle:(NSString *)title;- (void) setStars:(NSUInteger)stars;- (void) setVist:(NSUInteger)vist;- (void) setLevel:(char)level;- (NSString *) getUrl;- (NSString *) getTitle;- (NSUInteger) getStars;- (NSUInteger) getVist;- (char) getLevel;//構造方法 儲存資料- (instancetype)initWithUrl:(NSString *)url  withTitle:(NSString *)title  withSarts:(NSUInteger)stars   withVist:(NSUInteger)vist  withLevel:(char)level;@end

#import "BookMark.h"@implementation BookMark- (instancetype) initWithUrl:(NSString *)url withTitle:(NSString *)title withSarts:(NSUInteger)stars withVist:(NSUInteger)vist withLevel:(char)level{self = [super init];if (self) {_url = url;_title = title;_stars = stars;_vist = vist;_level = level;}return self;}- (void) setUrl:(NSString *)url{_url = url;}- (void) setTitle:(NSString *)title{_title = title;}- (void) setStars:(NSUInteger)stars{_stars = stars;}- (void) setVist:(NSUInteger)vist{_vist = vist;}- (void) setLevel:(char)level{_level = level;}- (NSString *) getUrl{return _url;}- (NSString *) getTitle{return _title;}- (NSUInteger) getStars{return _stars;}- (NSUInteger) getVist{return _vist;}- (char) getLevel{return _level;}@end

2.管理器類的實現

#import <Foundation/Foundation.h>#import "BookMark.h"//書籤管理器類@interface BookManager : NSObject{NSMutableArray * _array;}- (instancetype)init;//刪除- (void) removeBookMark:(NSString *)title;//增加- (void) addBookMarkWithUrl:(NSString *)url      withTitle:(NSString *)title      withStars:(NSUInteger)stars   withVist:(NSUInteger)vist      withLevel:(char)level;//修改- (void) modifyTitle:(NSString *)title withNewTitle:(NSString *)newTitle;//尋找- (void) searchWithTitle:(NSString *)title;- (void) sortWithStars;- (void) showAllBookMark;@end
#import "BookManager.h"@implementation BookManager- (instancetype)init{self = [super init];if (self) {_array = [[NSMutableArray alloc] init];}return self;}//增加書籤- (void) addBookMarkWithUrl:(NSString *)url  withTitle:(NSString *)title  withStars:(NSUInteger)stars   withVist:(NSUInteger)vist  withLevel:(char)level{for (int i = 0; i < [_array count]; i ++) {if ([title isEqualToString:[_array[i] getTitle]]) {NSLog(@"重複添加");return;}}//下面既可以使用構造方法也可以使用set方法BookMark *book = [[BookMark alloc] initWithUrl:url withTitle:title withSarts:stars withVist:vist withLevel:level];//BookMark * book = [[BookMark alloc] init];//[book setUrl:url];//[book setTitle:title];//[book setStars:stars];//[book setVist:vist];//[book setLevel:level];[_array addObject:book];}//刪除書籤- (void) removeBookMark:(NSString *)title{for (int i = 0; i < [_array count]; i ++) {if ([title isEqualToString:[_array[i] getTitle]]) {[_array removeObject:_array[i]];return;}else NSLog(@"沒有這個書籤");}}//修改書籤- (void) modifyTitle:(NSString *)title withNewTitle:(NSString *)newTitle{for (int i = 0; i < [_array count]; i ++) {if ([title isEqualToString:[_array[i] getTitle]]) {[_array[i] setTitle:newTitle];}}}//尋找書籤- (void) searchWithTitle:(NSString *)title{int index = -1;  //儲存書籤位置//index = -1 表示沒有找到對應的書籤//遍曆書籤,找到後就儲存目標書籤位置後退出迴圈for (int i = 0; i < [_array count]; i ++) {if([title isEqualToString:[_array[i] getTitle]]){index = i;break;}}if (index == -1) {NSLog(@"沒有找到需要尋找的書籤");}else NSLog(@"找了該書籤 pos = %d",index);}- (void) sortWithStars{//使用冒泡排序對書籤對象進行排序for (int i = 0; i < [_array count] - 1; i ++) {  //控制排序的輪數for (int j = 0; j < [_array count] - 1 - i;  j ++) { //控制比較的次數if ([_array[j] getStars] > [_array[j + 1] getStars]) {NSArray * temp;temp = _array[j];_array[j] = _array[j + 1];_array[j + 1] = temp;}}}}- (void) showAllBookMark{for (int i = 0; i < [_array count]; i ++) {NSLog(@"網址:%@ 標題:%@ 星級:%ld 訪問量:%ld 許可權:%c",  [_array[i] getUrl],  [_array[i] getTitle],  [_array[i] getStars],  [_array[i] getVist],  [_array[i] getLevel]);}}@end

5.書籤管理器的操作

這一步我們想象成是人在操作一個帶介面的書籤管理器,由於沒有介面,我們就只能在main函數裡面操作了。例如:

#import <Foundation/Foundation.h>#import "BookMark.h"#import "BookManager.h"int main(int argc, const char * argv[]) {@autoreleasepool {//建立一個百度的書籤BookManager* myBookManager = [[BookManager alloc] init];[myBookManager addBookMarkWithUrl:@"www.baidu.com" withTitle:@"百度" withStars:3 withVist:123 withLevel:'A'];//建立一個新浪的書籤[myBookManager addBookMarkWithUrl:@"www.sina.com" withTitle:@"新浪" withStars:7 withVist:456 withLevel:'B'];//建立一個搜狐的書籤[myBookManager addBookMarkWithUrl:@"www.souhu.com" withTitle:@"搜狐" withStars:5 withVist:756 withLevel:'C'];//重複添加[myBookManager addBookMarkWithUrl:@"www.souhu.com" withTitle:@"搜狐" withStars:5 withVist:756 withLevel:'C'];//顯示全部書籤NSLog(@"全部添加的書籤");[myBookManager showAllBookMark];//尋找[myBookManager searchWithTitle:@"新浪"];//刪除[myBookManager removeBookMark:@"百度"];NSLog(@"刪除後的書籤");[myBookManager showAllBookMark];//排序[myBookManager sortWithStars];NSLog(@"排序後的書籤");[myBookManager showAllBookMark];//修改[myBookManager modifyTitle:@"新浪" withNewTitle:@"123"];NSLog(@"修改後的書籤");[myBookManager showAllBookMark];}    return 0;}

首先我們天劍三個書籤:百度、新浪和搜狐。書籤的內容就是程式中的內容。

然後我們驗證增加書籤、尋找書籤、刪除書籤、書籤排序和修改書籤的行為方法是否正確。

最後程式的輸出是:

2015-07-22 20:15:58.560 3.書籤管理器[3083:303] 重複添加2015-07-22 20:15:58.562 3.書籤管理器[3083:303] 全部添加的書籤2015-07-22 20:15:58.563 3.書籤管理器[3083:303] 網址:www.baidu.com 標題:百度 星級:3 訪問量:123 許可權:A2015-07-22 20:15:58.565 3.書籤管理器[3083:303] 網址:www.sina.com 標題:新浪 星級:7 訪問量:456 許可權:B2015-07-22 20:15:58.565 3.書籤管理器[3083:303] 網址:www.souhu.com 標題:搜狐 星級:5 訪問量:756 許可權:C2015-07-22 20:15:58.566 3.書籤管理器[3083:303] 找了該書籤 pos = 12015-07-22 20:15:58.568 3.書籤管理器[3083:303] 刪除後的書籤2015-07-22 20:15:58.568 3.書籤管理器[3083:303] 網址:www.sina.com 標題:新浪 星級:7 訪問量:456 許可權:B2015-07-22 20:15:58.569 3.書籤管理器[3083:303] 網址:www.souhu.com 標題:搜狐 星級:5 訪問量:756 許可權:C2015-07-22 20:15:58.570 3.書籤管理器[3083:303] 排序後的書籤2015-07-22 20:15:58.571 3.書籤管理器[3083:303] 網址:www.souhu.com 標題:搜狐 星級:5 訪問量:756 許可權:C2015-07-22 20:15:58.573 3.書籤管理器[3083:303] 網址:www.sina.com 標題:新浪 星級:7 訪問量:456 許可權:B2015-07-22 20:15:58.574 3.書籤管理器[3083:303] 修改後的書籤2015-07-22 20:15:58.576 3.書籤管理器[3083:303] 網址:www.souhu.com 標題:搜狐 星級:5 訪問量:756 許可權:C2015-07-22 20:15:58.577 3.書籤管理器[3083:303] 網址:www.sina.com 標題:123 星級:7 訪問量:456 許可權:BProgram ended with exit code: 0
和我們預期的是一樣的,說明我們的書籤管理器的項目功能是實現了。

6.總結

在這個書籤管理器中我們有以下幾點需要學習的:

1.分析項目需求;

2.找對象,抽象出類;分析類的屬性和行為;

3.實作類別;

4.驗證相關行為或方法是否正確。

書籤管理器裡面儲存的是書籤,書籤裡面儲存的是資料。這裡我在書籤管理器裡面設定一個可變數組的行為來儲存書籤的地址。每次增加一個書籤的時候我們就建立一個書籤的對象,並把書籤的資料寫進去。刪除書籤的時候就刪除該書籤在數組中的位置就可以了。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

【IOS開發之Objective-C】書籤管理器項目

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.