// main.m
// Rectangle And Squanre
//
// Created by yg on 12-10-20.
// Copyright (c) 2012年 yg. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Rectangle.h"
#import "Square.h"
#import "XYpoint.h"
#import "Circle.h"
#import "Triangle.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// insert code here...
NSLog(@"長方形");
//rectangle類的使用
Rectangle *testReatangle=[[Rectangle alloc] init];
[testReatangle setWidth:4 heigh:3];
NSLog(@"width=%i heigh=%i",[testReatangle width],[testReatangle heigh]);
//Square類的使用
Square *testSquare=[[Square alloc] init];
[testSquare setSide:6];
NSLog(@"Side=%i",[testSquare reSide]);
//XYpoint的使用 創XYpoint對象 testXYpoint,然後賦給origin,再拿origin出來 賦給 testTwo
XYpoint *testXYpoint=[[XYpoint alloc] init];
[testXYpoint setX:5 Y:3];
//創建一個座標 XYpoint類的對象testXYpoint,怎麼將這個賦值給對象rectangle的實例變量 對象origin?
[testReatangle setOrigin:testXYpoint];
XYpoint *testTwo=[[XYpoint alloc] init];
testTwo=[testReatangle reOrigin];
NSLog(@"X=%i,Y=%i",[testTwo x],[testTwo y]);
//添加屬性標識以後 創建對象 myRect,myXYpoint,然後直接將myRect.origin=myXYpoint
Rectangle *myRect=[[Rectangle alloc] init];
XYpoint *myXY=[[XYpoint alloc] init];
[myXY setX:100 Y:200];
myRect.Origin=myXY;
[myXY setX:50 Y:50];
NSLog(@"x=%i,y=%i",[myRect.Origin x],[myRect.Origin y]);
NSLog(@"x=%i,y=%i",myRect.Origin.x,myRect.Origin.y);//在XYpoint類裏面使用寄存器方法,直接訪問實例變量。
//1.如果在setOrigin方法時候直接採用 參數傳值 myRct.Origin=f; 這傳的 f 是一個指針,這個指針指向採用方法時候 myXY
//的內存空間,則再有f把這個指針地址傳向 Origin對象 ,origin存的也是指向myXY的內存空間的指針。所以當myXY改變其值X,Y時候,
//用其他對象打印輸出的值也隨之改變。
//2.要向對對象使用方法,則必須先 在開頭引用其類的 頭文件。@class沒有辦法使用[];
//使用translate方法 傳對象座標相加。
[myRect translate:myXY];
NSLog(@"x=%i,y=%i",myRect.Origin.x,myRect.Origin.y);
//增加了Circle類,Triangle類的使用測試
Triangle *myTriangle=[[Triangle alloc] init];
NSLog(@"三角形面積爲%i",[myTriangle getArea:2 :2]);
NSLog(@"等邊三角形周長爲%i",[myTriangle getPerimeter:5]);
}
return 0;
}
- 類有父類(超類),子類,子類繼承了父類的(實例變量+方法),然後子類有可以定義自己的(實例變量+方法),假如子類和父類繼承方法一樣名稱參數等等,則可以重載。
- 在屬於同一個父類的多個子類,屬於平行關係,如 Circle,Rectangle,Triangle,類,在對他們使用同一個名稱的方法時候,不同的類對象返回結果,方法內的運算過程都不一樣。這樣屬於多態。
- [類對象 方法名(帶參數)],其中編譯器首先會檢查 方法是否對應類對象 d