• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Klasy wewnętrzne w c# a dostęp do kolekcji z klasy zewnętrznej.

0 głosów
120 wizyt
pytanie zadane 3 marca 2017 w C# i .NET przez sh1nen Obywatel (1,590 p.)

Hej, podczas realizacji jednego z zadań na uczelnię, natrafiłem na problem, który na swój sposób potrafię rozwiązaćnatomiast mam wrażenie że jest to rozwiązanie łamiące zasady hermetyzacji itd.
Mianowicie mam klasę o nazwie DataRepository, która ma sobie jakieś metody oraz mam mieć zaimplementowaną w niej klasęjak wewnętrzną DataContext przechowującą kontenery z danymi. W klasie DataRepository mam wykonywać działania na kontenerach z DataContext. U mnie wygląda to tak :
 

public DataRepository
{
  public class DataContext
  {
     public List readers { get; set; }
     public Dictionary books { get; set; }
     public ObservableCollection relations { get; set; }
     public ObservableCollection states { get; set; }

     public DataContext()
     {
        readers = new List();
        books = new Dictionary();
        relations = new ObservableCollection();
        states = new ObservableCollection();
     }
 }

  public IFiller Filler { get; set; }
  private DataContext data { get; set; }

  public DataRepository()
  {
    data = new DataContext();
  }

  public DataRepository(IFiller fillIt)
  : this() {
    this.Filler = fillIt;
    useFiller();
  }

  public void useFiller()
  {
     Filler.Fill(data);
  }
}

Następnie chciałbym zaimplementować zbiór metod C.R.U.D do obsługi obiektów danych, dla każdej kolekcji z klasy DataContext. 
Poniżej przykładową metodą :

public void Add(Readers reader)
{
  data.readers.Add(reader);
}


Czy takie postępowanie ma wogole rację bytu ? wydaje mi się że jest to w dość dużym stopniu jednak nie poprawne. Proszę o wskazówki i nakierowanie jak mógłbym to w bardziej przystępny sposób zrealizować.

1 odpowiedź

0 głosów
odpowiedź 3 marca 2017 przez rafal612b Nałogowiec (44,920 p.)
Bardziej poprawnym rozwiązaniem implementacji Add wydaje się dodanie metody do klasy DataContext

public void AddReaders(Readers reader){

  this.readers.Add(reader);

}

 

i używanie metody w DataRepository

public void AddReaders(Readers reader){

  data.AddReaders(reader);

}

 

Ale problemem może być też nie przemyślane rozdzielenie klas ? może klasa DataContext wcale nie jest taka potrzebna ? ;)
komentarz 4 marca 2017 przez sh1nen Obywatel (1,590 p.)

 

Problem w tym ze w wymaganiach zadania jest ona zapisana, a struktura powinna sie prezentowac tak jak na diagramie

komentarz 4 marca 2017 przez rafal612b Nałogowiec (44,920 p.)
A masz może całą treść zdania i cały diagram jak ma to wyglądać ?

Podobne pytania

0 głosów
1 odpowiedź 1,755 wizyt
pytanie zadane 25 maja 2017 w C i C++ przez mrdropex Początkujący (430 p.)
0 głosów
1 odpowiedź 422 wizyt
pytanie zadane 9 listopada 2017 w C# i .NET przez garris Użytkownik (660 p.)
0 głosów
1 odpowiedź 381 wizyt
pytanie zadane 10 maja 2016 w C# i .NET przez Misiek Gaduła (4,560 p.)
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

64,198 zapytań

110,595 odpowiedzi

231,808 komentarzy

46,959 pasjonatów

Przeglądających: 243
Pasjonatów: 22 Gości: 221

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...