Тема: Як об'єднати два класи
Доброго вечора!
Не знаю як правильно треба було мені створити заголовок
Отже, є завдання, яке потребує, створити класс вагон, який буду складатись з типу вагона та його номера; та реалізувати стек, де будут ці вагони.
Я зробив стек:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
interface IStack {
Boolean Empty();
object Pop();
object Push(object element);
object Peek();
void Display();
}
class Stack : IStack {
int StackSize;
int top;
object[] item;
public int StackSizeProperty {
get { return StackSize; }
set { StackSize = value; }
}
public Stack() {
StackSizeProperty = 10;
item = new object[StackSize];
top = 0;
}
public Stack(int capacity) {
StackSizeProperty = capacity;
item = new object[StackSizeProperty];
top = 0;
}
public bool Empty() {
if (top == 0) {
return true;
}
return false;
}
public object Push(object element) {
if (top == StackSize) {
Console.WriteLine("Stack is full.");
return "Stack is full.";
}
else {
item[++top] = element;
Console.WriteLine("Item was been pushed.");
return "item was been pushed.";
}
}
public object Pop() {
if (Empty()) {
Console.WriteLine("Stack is empty.");
return "Nothing.";
}
else {
return item[top--];
}
}
public object Peek() {
if (Empty())
{
Console.WriteLine("Stack is empty.");
return "Nothing.";
}
else {
return item[top];
}
}
public void Display() {
for (int elements = top; elements > 0; elements--) {
Console.WriteLine("Item " + elements + ": " + item[elements]);
}
}
public void Exit() {
do {
} while (Console.ReadKey().Key != ConsoleKey.Escape);
}
}
class MainProgram {
static void Main()
{
Stack myStack = new Stack();
int choice;
while (true) {
Console.WriteLine("- -- Stack MENU -- -");
Console.WriteLine("1. Add an element.");
Console.WriteLine("2. See the Top element.");
Console.WriteLine("3. Remove top element.");
Console.WriteLine("4. Display stack elements.");
Console.WriteLine("5. Exit(ESC).");
Console.Write("\n\tSelect your choice: ");
choice = int.Parse(Console.ReadLine());
switch (choice)
{
case 1:
myStack.Push(Console.ReadLine());
break;
case 2:
myStack.Peek();
break;
case 3:
myStack.Pop();
break;
case 4:
myStack.Display();
break;
case 5:
myStack.Exit();
break;
}
}
}
}
Потім зробив клас вагону:
class Carriage {
public int SequenceNumber {
get; protected set;
}
public string CarriageType {
get; protected set;
}
public Carriage(int number, string type) {
this.SequenceNumber = number;
this.CarriageType = type;
}
}
class MainProgram
{
static void Main()
{
Console.Write("Enter the sequence numbers: ");
int seqNumber = int.Parse(Console.ReadLine());
Console.Write("Enter the type of train: ");
string type = Console.ReadLine();
Carriage myCarriage = new Carriage(seqNumber, type);
}
}
Саме на данному етапі, я не знаю як мені об'єднати вагон з стеком.
Робив так:
class MainProgram
{
static void Main()
{
Stack myStack = new Stack();
int choice;
Console.Write("Enter the sequence numbers: ");
int seqNumber = int.Parse(Console.ReadLine());
Console.Write("Enter the type of train: ");
string type = Console.ReadLine();
Carriage myCarriage = new Carriage(seqNumber, type);
while (true)
{
Console.WriteLine("- -- Stack MENU -- -");
Console.WriteLine("1. Add an element.");
Console.WriteLine("2. See the Top element.");
Console.WriteLine("3. Remove top element.");
Console.WriteLine("4. Display stack elements.");
Console.WriteLine("5. Exit(ESC).");
Console.Write("\n\tSelect your choice: ");
choice = int.Parse(Console.ReadLine());
switch (choice)
{
case 1:
myStack.Push(myCarriage);
break;
case 2:
myStack.Peek();
break;
case 3:
myStack.Pop();
break;
case 4:
myStack.Display();
break;
case 5:
myStack.Exit();
break;
}
}
}
}
Але, на початку консольної програми, мене програма просить вписати параметри вагону.
Я не знаю як тоді його розмістити, щоб вона викликалась лише коли користувач натиснув 1 - "Add an element."
Буду вдячний за допомогу.