Fabryka abstrakcji (alfabet)

0

Witam,
Posiadam kod który otrzymaliśmy na studiach na zadanie domowe. Po przerobieniu wygląda tak.

using System;
using System.Text;


enum Alphabets { Latin, Greek, Cyrillic };

abstract class Numbers{
 
}

abstract class Factory {
   
 public abstract Numbers CreateNumbers();
 
 public static Factory chooseFactory(Alphabets alphabet) {
   switch (alphabet) {
     case Alphabets.Cyrillic:
       return new CyrillicFactory();
     default:
       throw new NotImplementedException();
   }
 }
}


class LatinFactory : Factory {
 public override Letters CreateLetters() {
   return new LatinaLetters();
 }
 
 //
 //
}



abstract class Letters {
 public abstract string GetLetters();
}

// ...
// ...
// ...

class CyrillicNumbers : Numbers { 
 public override string GetNumbers(){
   return "1 2 3";
 }
}


public class Application{
   public static void Main(String[] args){
       Factory latinAlphabetFactory = Factory.chooseFactory(Alphabets.Latin);
       
   }
}

Niestety wyrzuca mi kilka błędów takich jak te:

Main.cs(42,25): error CS0246: The type or namespace name 'Numbers' could not be found (are you missing a using directive or an assembly reference?)
Main.cs(10,19): error CS0246: The type or namespace name 'Numbers' could not be found (are you missing a using directive or an assembly reference?)
Main.cs(43,26): error CS0115: 'CyrillicNumbers.GetNumbers()': no suitable method found to override
Main.cs(24,27): error CS0115: 'LatinFactory.CreateLetters()': no suitable method found to override
Main.cs(23,7): error CS0534: 'LatinFactory' does not implement inherited abstract member 'Factory.CreateNumbers()'

Nie za bardzo wiem jak mógłbym je naprawić. Jakieś pomysły??

0

'CyrillicNumbers.GetNumbers()': no suitable method found to override

Robisz override, a klasa bazowa nie ma takiej metody w ogóle, więc nie ma co overridować.

'LatinFactory' does not implement inherited abstract member 'Factory.CreateNumbers()'

LatinFactory nie overriduje metody CreateNumbers, która jest oznaczona jako abstrakcyjna, więc we wszystkich klasach pochodnych, które nie są abstrakcyjne, musi zostać zaimplementowana.

1 użytkowników online, w tym zalogowanych: 0, gości: 1