Here are the two classes we saw in the lecture. They demonstrate the C# features we discussed including private and public fields, instance methods, static methods, constructors, and constructor chaining.
class Point {
public int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
// Construct a Point from a string such as "34 -12".
public Point(string s) {
string[] a = s.Split();
x = int.Parse(a[0]);
y = int.Parse(a[1]);
}
// Return the Manhattan distance from this point to p.
public int dist(Point p) {
return Abs(this.x - p.x) + Abs(this.y - p.y);
}
// Return the Manhattan distance from p to q.
static int dist(Point p, Point q) {
return Abs(p.x - q.x) + Abs(p.y - q.y);
}
// Construct a Point from a string such as "34 -12".
static Point parse(string s) {
string[] a = s.Split();
return new Point(int.Parse(a[0]), int.Parse(a[1]));
}
}
// A fixed-size stack.
class Stack {
int[] a;
int count = 0;
public Stack(int max) {
a = new int[max];
}
public Stack() : this(100) {
}
public void push(int i) {
a[count] = i;
++count;
}
// push i, n times
public void push(int i, int n) {
for (int j = 0 ; j < n ; ++j)
push(i);
}
public int pop() {
--count;
return a[count];
}
public bool isEmpty() {
return count == 0;
}
}In the lab we began to solve this week's exercise #1, which involves writing a Time class. Here is as much of the class as we have written so far:
class Time {
int seconds; // seconds since midnight, 0 .. (24 * 3600 - 1)
public Time(int hour, int min, int sec) {
seconds = 3600 * hour + 60 * min + sec;
}
public Time(int hour, int min) : this(hour, min, 0) {
}
// private constructor
Time(int seconds) {
this.seconds = seconds;
}
public Time add(int delta) {
int t = (seconds + delta) % 24 * 3600;
return new Time(t);
}
}