객체지향 예제
main.m
//
// main.m
// BookManager
//
// Created by MacBookPro on 2018. 7. 10..
// Copyright © 2018년 MacBookPro. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Book.h"
#import "BookManager.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Book *book1 = [[Book alloc]init];
book1.name = @"햄릿";
book1.genre = @"비극";
book1.author = @"세익스피어";
//[book1 bookPrint];
Book *book2 = [[Book alloc]init];
book2.name = @"누구를 위해 종은 울리나";
book2.genre = @"전쟁소설";
book2.author = @"헤밍웨이";
Book *book3 = [[Book alloc]init];
book3.name = @"죄와 벌";
book3.genre = @"사실주의";
book3.author = @"톨스토이";
BookManager *myBook = [[BookManager alloc]init];
//myBook 객체에 인스턴스 값 넣기
[myBook addBook:book1];
[myBook addBook:book2];
[myBook addBook:book3];
//모든책 구하기
NSLog(@"%@",[myBook showAllBook]);
//책의 개수 구하기
NSLog(@"count : %li" , [myBook countBook]);
//책찾기 값넣기
NSString *strTemp = [myBook findBook:@"죄와 벌"];
NSLog(@"\n");
if(strTemp != nil){
NSLog(@"%@", strTemp);
}else{
NSLog(@"찾으시는 책이 없네요~ ㅜ.ㅜ");
}
//책 삭제후
NSString *removeResult = [myBook removeBook:@"죄와 벌"];
if(removeResult != nil){
NSLog(@"%@ 책을 지웠습니다.", removeResult);
}else{
NSLog(@"지울려는 책이 없네요...");
}
//모든책 구하기
NSLog(@"%@",[myBook showAllBook]);
//개수 구하기
NSLog(@"count : %li" , [myBook countBook]);
}
return 0;
}
Book.h
//
// Book.h
// BookManager
//
// Created by MacBookPro on 2018. 7. 10..
// Copyright © 2018년 MacBookPro. All rights reserved.
//
//book 모델
#import <Foundation/Foundation.h>
@interface Book : NSObject
//프로퍼티 선언, (옵션) 설정
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *genre;
@property (nonatomic, strong) NSString *author;
-(void) bookPrint;
@end
Book.m
//
// Book.m
// BookManager
//
// Created by MacBookPro on 2018. 7. 10..
// Copyright © 2018년 MacBookPro. All rights reserved.
//
#import "Book.h"
@implementation Book
//구현
@synthesize name, genre, author;
-(void)bookPrint{
NSLog(@"Name : %@" , name);
NSLog(@"Genre : %@" , genre);
NSLog(@"Author : %@" , author);
}
@end
Bookmanager.h
//
// BookManager.h
// BookManager
//
// Created by MacBookPro on 2018. 7. 10..
// Copyright © 2018년 MacBookPro. All rights reserved.
//
#import <Foundation/Foundation.h>
@class Book;
@interface BookManager : NSObject{
//맴버변수
NSMutableArray *bookList;
}
//책 객체 추가
-(void)addBook: (Book *)bookObject;
//모든 책들 보여주기
-(NSString *)showAllBook;
//책 개수 구하기
-(NSUInteger)countBook;
//책찾기
-(NSString *)findBook: (NSString *)name;
//책 삭제
-(NSString *)removeBook: (NSString *)name;
@end
Bookmanager.m
//
// BookManager.m
// BookManager
//
// Created by MacBookPro on 2018. 7. 10..
// Copyright © 2018년 MacBookPro. All rights reserved.
//
#import "BookManager.h"
#import "Book.h"
@implementation BookManager
//초기화
- (id)init {
self = [super init];
if(self){
bookList = [[NSMutableArray alloc]init];
}
return self;
}
//array에 addObject 매서드 써서 객체 삽입
-(void)addBook:(Book *)bookObject{
[bookList addObject:bookObject];
}
//현재 존재하는 모든 책들 문자열로 리턴
-(NSString *)showAllBook{
NSMutableString *strTemp = [[NSMutableString alloc]init];
for (Book *bookTemp in bookList) {
[strTemp appendString:@"\n"];
[strTemp appendString:@"name : "];
[strTemp appendString:bookTemp.name];
[strTemp appendString:@"\n"];
[strTemp appendString:@"genre : "];
[strTemp appendString:bookTemp.genre];
[strTemp appendString:@"\n"];
[strTemp appendString:@"author : "];
[strTemp appendString:bookTemp.author];
[strTemp appendString:@"\n"];
[strTemp appendString:@"============================="];
}
return strTemp;
}
//책 개수 리턴
-(NSUInteger)countBook{
return [bookList count];
}
//이름값으로 책 찾기 메서드
-(NSString *)findBook:(NSString *)name{
NSMutableString *strTemp = [[NSMutableString alloc]init];
for(Book *bookTemp in bookList){
if([bookTemp.name isEqualToString:name]){
[strTemp appendString:@"name : "];
[strTemp appendString:bookTemp.name];
[strTemp appendString:@"\n"];
[strTemp appendString:@"genre : "];
[strTemp appendString:bookTemp.genre];
[strTemp appendString:@"\n"];
[strTemp appendString:@"author : "];
[strTemp appendString:bookTemp.author];
[strTemp appendString:@"\n"];
[strTemp appendString:@"==================="];
return strTemp;
}
}
return nil;
}
//책 삭제
-(NSString *)removeBook:(NSString *)name{
for(Book *bookTemp in bookList){
if([bookTemp.name isEqualToString:name]){
[bookList removeObject:bookTemp];
return name;
}
}
return nil;
}
@end
objectivec 특징
변수,메서드 선언부와 구현부 파일이 따로 나뉜다.
선언부 파일은 .h
구현부 파일은 .m
실행부분은 main.m이다.
반드시 제일 끝부분에 ; 을 붙여주어야 한다. 이 부분이 swift와 다르다.
선언부에서 getter setter를 @property를 사용해서 대신할 수 있다.
구현부에서 @synthesize name, genre, author; 이런식으로 변수 명을 써주어야 한다.
메서드 종류
1.반환값이 없는 메서드 선언
-(void)메서드명 : (인자타입*)인자명
-(void)addBook: (Book *)bookObject;
2. 반환 값이 없는 메서드 구현
-(void)addBook:(Book *)bookObject{
[bookList addObject:bookObject]; //bookList 객체이 있는 addObject 메서드에 bookObject를 받아서 넣는다.
}
3.반환 값이 있는 메서드 선언
//-(반환타입 *)메서드명: (인자타입 *)인자이름;
-(NSString *)findBook: (NSString *)name;
4.반환 값이 있는 메서드 구현
//이름값으로 책 찾기 메서드
-(NSString *)findBook:(NSString *)name{
NSMutableString *strTemp = [[NSMutableString alloc]init];
for(Book *bookTemp in bookList){
if([bookTemp.name isEqualToString:name]){
[strTemp appendString:@"name : "];
[strTemp appendString:bookTemp.name];
[strTemp appendString:@"\n"];
[strTemp appendString:@"genre : "];
[strTemp appendString:bookTemp.genre];
[strTemp appendString:@"\n"];
[strTemp appendString:@"author : "];
[strTemp appendString:bookTemp.author];
[strTemp appendString:@"\n"];
[strTemp appendString:@"==================="];
return strTemp;
}
}
return nil;
}
'ios 뽀개기 > objective-c' 카테고리의 다른 글
objective c 의 모든것 (5) | 2018.07.28 |
---|---|
objective c alert 구현 (0) | 2018.07.28 |
array dictionary (0) | 2018.07.10 |
NSString 예제 (0) | 2018.07.09 |
if문 for문 switch문 (0) | 2018.07.09 |
댓글