, . , C, . , struct, , - . - :
typedef struct { int numerator; int denominator; } Fraction;
Fraction *newFraction(int numer, int denom)
{
Fraction *result = (Fraction *)malloc(sizeof(Fraction));
result->numerator = numer;
result->denominator = denom;
return result;
}
Fraction *multiplyFraction(Fraction *left, Fraction *right)
{
Fraction *result = (Fraction *)malloc(sizeof(Fraction));
result->numerator = left->numerator * right->numerator;
result->denominator = left->denominator * right->denominator;
return result;
}
:
Fraction *half = newFraction(1, 2);
Fraction *twothirds = newFraction(2, 3);
Fraction *onethird = multiplyFraction(half, twothirds); // results is 2/6 as we don't reduce in this example
ADT - - . , ( "" ) , , .
- , . " multiplyFraction, " " multiplyFraction ". Objective-C, :
Fraction *onethird = multiplyFraction(half, twothirds);
:
Fraction *onethird = [half multiplyFraction:twothirds];
" " " " - Objective-C multipleFraction, half, twoThirds.
! Objective-C multiplyFraction:
- (Fraction *) multiplyFraction:(Fraction *)right
{
Fraction *result = [Fraction new];
result->numerator = ????->numerator * right->numerator;
result->denominator = ????->denominator * right->denominator;
return result;
}
????. , (right), ( left). Objective-C , - "" ( "ADT" ), . , , self:
- (Fraction *) multiplyFraction:(Fraction *)right
{
Fraction *result = [Fraction new];
result->numerator = self->numerator * right->numerator;
result->denominator = self->denominator * right->denominator;
return result;
}
- self - .
- , :
- "" - ""
struct; - - ,
@interface... struct...; , () (struct) , (`@interface); - ( ADT );
- .
Objective-C C struct...