,
# : , . , , .
, #: . , , , . . #.
- , , . . , . , . , , . , , . # interface.
. . , . , , . , . , ..
(.. ) , . . , -. . , , , . # : - .
interface. .
interface
{
_ _ 1 { _ );
_ _ 2 { _ );
//...
_ _ N { _ );
|
|
}
- . _ . , , . , . , . , .
, .
12.1
public interface ISeries
{
int GetNext(); //
void Reset(); //
void SetStart(int ); //
}
ISeries. I , , - . ISeries public .
, , . . , . , static.
, . , . .
class _ : _
{
//
}
_ - . , . , .
. . . , .
, , public. , , . , , .
, ISeries. ByTwos, , .
12.2
// ISeries.
class ByTwos: ISeries
{
int start;
int val;
public ByTwos()
{
start = 0;
val = 0;
}
public int GetNext()
{
val += 2;
return val;
}
public void Reset()
{
val = start;
}
public void SetStart(int x)
{
start = x;
val = start;
}
}
, ByTwos , ISeries. , , .
|
|
, ByTwos, ISeries.
12.3
// ByTwos,
// .
using System;
class SeriesDemo
{
static void Main()
{
ByTwos ob = new ByTwos();
for(int i=0; i < 5; i++)
Console.WriteLine(" " +
ob.GetNext());
Console.WriteLine("\n");
ob.Reset();
for(int i=0; i < 5; i++)
Console.WriteLine(" " +
ob.GetNext());
Console.WriteLine("\n 100");
ob.SetStart(100);
for(int i=0; i < 5; i++)
Console.WriteLine(" " +
ob.GetNext());
}
}
SeriesDemo, , ISeries, ByTwos SeriesDemo. . , ISeries.cs, ByTwos.cs SeriesDemo.cs, :
>csc SeriesDemo.cs ISeries.cs ByTwos.cs
Visual Studio #. , ( ) .
.
2
4
6
8
10
.
2
4
6
8
10
100.
102
104
106
108
110
, , . ByTwos, GetPrevious(), .
12.4
// ISeries
// ByTwos GetPrevious().
class ByTwos: ISeries
{
int start;
int val;
int prev;
public ByTwos()
{
start = 0;
val = 0;
prev = -2;
}
public int GetNext()
{
prev = val;
val += 2;
return val;
}
public void Reset()
{
val = start;
prev = start - 2;
}
public void SetStart(int x)
{
start = x;
val = start;
prev = val - 2;
}
// , ISeries.
public int GetPrevious()
{
return prev;
}
}
, GetPrevious(), , ISeries. , . .
, . Primes, . , ISeries , ByTwos.
12.5
// ISeries
//
class Primes: ISeries
{
int start;
int val;
public Primes()
{
start = 2;
val = 2;
}
public int GetNext()
{
int i, j;
bool isprime;
val++;
for(i = val; i < 1000000; i++) {
isprime = true;
for(j = 2; j <= i/j; j++) {
|
|
if((i%j)==0) {
isprime = false;
break;
}
}
if(isprime) {
val = i;
break;
}
}
return val;
}
public void Reset()
{
val = start;
}
public void SetStart(int x)
{
start = x;
val = start;
}
}
, , ByTwos Primes, , , . , - , , .
, # , .. . , . , . , 11.
. - ByTwos Primes. , .
12.6
// .
using System;
// .
public interface ISeries
{
int GetNext(); //
void Reset(); //
void SetStart(int x); //
}
// ISeries
// ,
// .
class ByTwos: ISeries
{
int start;
int val;
public ByTwos()
{
start = 0;
val = 0;
}
public int GetNext()
{
val += 2;
return val;
}
public void Reset()
{
val = start;
}
public void SetStart(int x)
{
start = x;
val = start;
}
}
// ISeries
// .
class Primes: ISeries
{
int start;
int val;
public Primes()
{
start = 2;
val = 2;
}
public int GetNext()
{
int i, j;
bool isprime;
val++;
for(i = val; i < 1000000; i++) {
isprime = true;
for(j = 2; j <= i/j; j++) {
if((i%j)==0) {
isprime = false;
break;
}
}
if(isprime) {
val = i;
break;
}
}
return val;
}
public void Reset()
{
val = start;
}
public void SetStart(int x)
{
start = x;
val = start;
}
}
class SeriesDemo2
{
static void Main()
{
ByTwos twoOb = new ByTwos();
Primes primeOb = new Primes();
ISeries ob;
for(int i=0; i < 5; i++) {
ob = twoOb;
Console.WriteLine(" " +
ob.GetNext());
ob = primeOb;
Console.WriteLine(" " +
ob.GetNext());
}
}
}
:
2
3
4
, 5
6
7
8
11
10
13
Main() ob ISeries. , , ISeries. twoOb primeOb ByTwos Primes , ISeries.
|
|
: , . , , .
, . .
//
{
get;
set;
}
, , , : get set .
, . . , . , . , set private.
ISeries ByTwos, Next , .
12.7
// .
using System;
public interface ISeries
{
// .
int Next {
get; //
set; //
}
}
// ISeries.
class ByTwos: ISeries
{
int val;
public ByTwos() {
val = 0;
}
// .
public int Next {
get {
val += 2;
return val;
}
set {
val = value;
}
}
}
// .
class SeriesDemo3
{
static void Main() {
ByTwos ob = new ByTwos();
//
// .
for(int i=0; i < 5; i++)
Console.WriteLine(" " + ob.Next);
Console.WriteLine("\n 21");
ob.Next = 21;
for(int i=0; i < 5; i++)
Console.WriteLine(" " + ob.Next);
}
}
.
2
4
6
8
10
21
23
25
27
29
31
. .
//
this[int ]
{
get;
set;
}
, , , : get set .
ISeries, , i- .
12.8
// .
using System;
public interface ISeries
{
// .
int Next
{
get; //
set; //
}
// .
int this[int index]
{
get; // return the specified number in series
}
}
// ISeries.
class ByTwos: ISeries
{
int val;
public ByTwos()
{
val = 0;
}
// .
public int Next
{
get {
val += 2;
return val;
}
set {
val = value;
}
}
// .
public int this[int index]
{
get
{
val = 0;
for(int i=0; i<index; i++)
val += 2;
return val;
}
}
}
// .
class SeriesDemo4
{
static void Main()
|
|
{
ByTwos ob = new ByTwos();
//
// .
for(int i=0; i < 5; i++)
Console.WriteLine(" " + ob.Next);
Console.WriteLine("\n 21");
ob.Next = 21;
for(int i=0; i < 5; i++)
Console.WriteLine(" " +
ob.Next);
Console.WriteLine("\n 0");
ob.Next = 0;
//
// .
for(int i=0; i < 5; i++)
Console.WriteLine(" " + ob[i]);
}
}
.
2
4
6
8
10
21
23
25
27
29
31
0
0
2
4
6
8
. , . , , , , .
12.9
// .
using System;
public interface IA
{
void Meth1();
void Meth2();
}
// Meth1() Meth2(),
// Meth3().
public interface IB: IA
{
void Meth3();
}
//
// IA IB
class MyClass: IB
{
public void Meth1()
{
Console.WriteLine(" Meth1().");
}
public void Meth2()
{
Console.WriteLine(" Meth2().");
}
public void Meth3()
{
Console.WriteLine(" Meth3().");
}
}
class IFExtend {
static void Main() {
MyClass ob = new MyClass();
ob.Meth1();
ob.Meth2();
ob.Meth3();
}
}
Methl() MyClass. . , , , , , , .