본문 바로가기
ios 뽀개기/objective-c

객체지향 예제

by 인생여희 2018. 7. 10.
반응형

객체지향 예제


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

댓글