1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Kỹ thuật lập trình >

11  Creating Custom Classes

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (24.65 MB, 900 trang )


Discussion

A class is a virtual entity. A class contains methods and other language specific structures. Let's say you want to write a calculator program. You are creating the user interface and you want each button on the calculator to have a black background, white

text and have a bump user interface, just like a real button. Aren't these all common

traits between all the buttons you want to place on your UI? You got! It's best that we

create a class to represent all our buttons and write the code once and reuse multiple

times.

Classes in objective-C are normally represented with the following code:

Header file

This is where you define what your class basically does: accept user input, rotate

a shape, or whatever. But the header file does not implement any of that functionality. Header files have a .h extension.

Implementation file

After defining the functionality of your class in the header file, here you write the

actual code for all that functionality. Implementation files have a .m extension.

Let's go a bit more into detail by going ahead and creating a class. Follow these steps:

1. In Xcode, go to the File menu and then select New File.

2. A dialog will appear, similar to that shown in Figure 1-23. Here simply select

Objective-C class from the list to the right. Make sure iOS is selected on the left

hand side. After this, press the Next button.



38 | Chapter 1: The Basics



www.it-ebooks.info



Figure 1-23. The Add File dialog in Xcode



3. In the next screen, make sure the Subclass of text box says NSObject. Now press the

Next button (Figure 1-24)



1.11 Creating Custom Classes | 39



www.it-ebooks.info



Figure 1-24. Setting the base class of our new class



4. In the next screen, as shown in Figure 1-25, make sure that the Save As text box

says Person, which is what we'll name our class. On the bottom of this dialog, make

sure that you are saving your class in the correct group/folder.



40 | Chapter 1: The Basics



www.it-ebooks.info



Figure 1-25. Creating a class called Person in Xcode



Now two files will get added to your project. One is called Person.h and the other

Person.m. The first one is the header and the second one is the implementation. Let's

have a look at the contents of the Person.h file:

#import

@interface Person : NSObject

@end



How about the contents of Person.m?

#import "Person.h"

@implementation Person

- (id)init

{

self = [super init];

if (self) {

// Initialization code here.

}

return self;

}

@end



1.11 Creating Custom Classes | 41



www.it-ebooks.info



We can see that Xcode has pre-populated these files with some content. We still don't

really know what this content is, but it's a start to our code. Now we have a class named

Person. Where did we get this name? It's not the name of the file itself, but Xcode took

the file name in Figure 1-25 and used it as the class name. If you have a look at the

contents of the Person.h again, you will notice this line of code:

@interface Person : NSObject



In short, what comes after the @interface keyword is your class name in this case. If

you don't like this name, simply right click on it and then select Refactor and then

Rename. This will guide you through a refactoring process through which you can

rename your class.



See Also

XXX



1.12 Defining Functionality for Classes

Problem

You want to define some functionality for your classes and allow them to be reused later.



Solution

Create instance or class methods for your classes in order to create reusable blocks of

code, or simply call a method in your program.



Discussion

Nearly every programming languages creates procedures and functions to encapsulate

specific functionality, especially functionality that the programmer uses over and over.

Some languages consider "procedure" and "function" just terms for the same thing,

while others make a distinction between them. A procedure is a block of code with a

name and an optional set of parameters. It does not have a return value. In ObjectiveC, a procedure returns void to indicate it does not return a value A function is similar

but does have a return value. Here is a simple procedure (with an empty body) written

in C:

void sendEmailTo(const char *paramTo,

const char *paramSubject,

const char *paramEmailMessage){

}



/* send the email here ... */



This procedure is named sendEmailTo and has three parameters: paramTo, paramSub

ject, and paramEmailMessage. We can then call this procedure as follows:



42 | Chapter 1: The Basics



www.it-ebooks.info



sendEmailTo("somebody@somewhere.com",

"My Subject",

"Please read my email");



Turning this procedure into a function that returns a Boolean value, we will have code

similar to this:

BOOL sendEmailTo(const char *paramTo,

const char *paramSubject,

const char *paramEmailMessage){

/* send the email here ... */

if (paramTo == nil ||

paramSubject == nil ||

paramEmailMessage == nil){

/* One or some of the parameters are nil */

NSLog(@"Nil parameter(s) is/are provided.");

return NO;

}

}



return YES;



Calling this function is similar to calling the sendEmailTo procedure except that with a

function, we can retrieve the return value, like so:

BOOL isSuccessful = sendEmailTo("somebody@somewhere.com",

"My Subject",

"Please read my email");

if (isSuccessful){

/* Successfully sent the email */

} else {

/* Failed to send the email. Perhaps we should display

an error message to the user */

}



In Objective-C, each method is created for a class. Creating Objective-C methods is

quite different from writing procedures and functions in a programming language such

as C. Methods fall into two categories: instance or class. Instance methods are methods

that can be called on an instance of the class (that is, on each object you create based

on the class), whereas class methods get called on the class itself and do not require an

instance of the class to be created by the programmer. To create a method in ObjectiveC, follow these steps in the .m file of your target class:

1. Type − if you want an instance method or + if you want a class method.

2. Choose the return type of your method and enclose it within parentheses—for

instance, (void) for no return value, (BOOL) for a Boolean value, (NSObject *) to

return an instance of NSObject, and so on.



1.12 Defining Functionality for Classes | 43



www.it-ebooks.info



Xem Thêm
Tải bản đầy đủ (.pdf) (900 trang)

×