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

question-closed Jak zrobić dziedziczenie tablicy między klasami

Object Storage Arubacloud
0 głosów
344 wizyt
pytanie zadane 2 września 2019 w C# przez XavRock Obywatel (1,390 p.)
zamknięte 4 września 2019 przez XavRock

Witam. Mam problem z dziedziczeniem między klasami, mianowicie chodzi o tablicę. Czy ktoś mógłby mi wyjaśnić jak to się robi ?
 

namespace Sort
{
    class Add_number
    {
        public int size_array;
        public int[] array;
        public void Add_to_array()
        {
            Console.WriteLine("Podaj rozmiar tablicy: ");           
            size_array = int.Parse(Console.ReadLine());
            int[] array = new int[size_array];
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = int.Parse(Console.ReadLine());
            }
        }
    }

    class Bouble_Sort : Add_number
    {
        public void Sort()
        {
            do
            {
                for(int i=0;i<size_array-1;i++)
                {
                    if (array[i] > array[i + 1])
                        array[i] = array[i + 1];
                }
                size_array = size_array --;
            }
            while (size_array>1);
        }
    }

    class Program
    {       
        static void Main(string[] args)
        {
            Add_number mojNumber = new Add_number();
            mojNumber.Add_to_array();
            Bouble_Sort sort = new Bouble_Sort();
            sort.Sort(mojNumber.size_array , mojNumber.array);       // to nie działa  
            Console.ReadKey();           
        }
    }
}

 

komentarz zamknięcia: koniec
komentarz 2 września 2019 przez piotrsz109 Stary wyjadacz (13,730 p.)
Ale co konkretnie?
komentarz 2 września 2019 przez XavRock Obywatel (1,390 p.)
W klasie Bouble_Sort  chcę móc operować na tablicy która jest w class Add_number
komentarz 2 września 2019 przez piotrsz109 Stary wyjadacz (13,730 p.)
To po prostu się do niej odwołujesz po nazwie
komentarz 2 września 2019 przez XavRock Obywatel (1,390 p.)
Żadne przeciążenie metody „Sort” nie pobiera następującej liczby argumentów: „2”

Mam taki błąd więc coś robię źle..
komentarz 2 września 2019 przez Velta Maniak (52,010 p.)
Console.WriteLine("Podaj rozmiar tablicy: ");           
size_array = int.Parse(Console.ReadLine());
int[] array = new int[size_array];

To już nie lepiej zrobić po prostu listę?

komentarz 3 września 2019 przez piotrsz109 Stary wyjadacz (13,730 p.)

@XavRock, Dzieje się tak, gdyż definiując metodę sort zdefiniowała ją bez argumentową

1 odpowiedź

+1 głos
odpowiedź 3 września 2019 przez pss95 Początkujący (460 p.)
wybrane 4 września 2019 przez XavRock
 
Najlepsza

Zacznijmy od błędu. Żadne przeciążenie metody „Sort” nie pobiera następującej liczby argumentów: „2” . W klasie Bouble_Sort masz metodę on nazwie (i definicji) Sort()Zwróć uwagę na nawias. W tym miejscu definiuje się argumenty funkcji/metody. U Ciebie tych argumentów nie ma. Możesz stworzyć nową funkcję/metodę o nazwie Sort i dodać do jej sygnatury (między nawiasami) argumenty, które odpowiadają zmiennym, których chcesz użyć. Przykładowo:

public void Sort(int size_array, int[] array) { ... }

W ten sposób przeładujesz metodę Sort. O tym jest mowa w treści błędu. Możesz też zmienić obecną metodę tak by przyjmowała argumenty, które chcesz przekazać w treści funkcji Main. Jednak twoje główne pytanie dotyczy dziedziczenia. Jeśli z niego chcesz skorzystać, to nie musisz ruszać funkcji Sort. Dziedziczenie polega na tworzeniu nowej klasy, która jest rozszerzeniem innej klasy. Oznacza to, że stosując dziedziczenie, tak jak w twoim przypadku, klasa Bouble_Sort (a tym samym obiekt stworzony za jej pomocą), posiada już pola i metody zdefiniowane w klasie Add_Number (tylko te publiczne, ale w tym przypadku wszystko jest publiczne, poprzez użycie modyfikatora dostępu public. Są też inne modyfikatory dostępu i też mają znaczenie przy dziedziczeniu, ale w tej chwili to nie jest ważne). Dzięki temu, że klasa Bouble_Sort posiada pola i metody klasy Add_Number, nie trzeba już tworzyć obiektu typu Add_Number. Błąd w twoim kodzie polega na samym korzystaniu z obiektów (z dziedziczeniem wszystko jest w porządku). Nie musisz tworzyć obiektu mojNumber, aby mieć dostęp do zdefiniowanych wyżej metod i pól. Wszystko jest w obiekcie sort. Dlatego wygląd funkcji Main mógłby prezentować się w ten sposób:

static void Main(string[] args)
{
  Bouble_Sort sort = new Bouble_Sort();
  sort.Add_to_array();            
  sort.Sort();      
  Console.ReadKey();           
}

Pominąłem w tym przypadku samą implementację sortowania bąbelkowego (nie analizowałem tego kodu), więc nie jestem przekonany czy zadziała poprawnie. Mam jednak nadzieję, że moja odpowiedź pomoże Ci w zrozumieniu tych błędów. :)

komentarz 4 września 2019 przez XavRock Obywatel (1,390 p.)
Bardzo dziękuję!

Podobne pytania

0 głosów
1 odpowiedź 226 wizyt
pytanie zadane 30 kwietnia 2021 w C# przez Adamek185wp Obywatel (1,280 p.)
0 głosów
1 odpowiedź 415 wizyt
pytanie zadane 7 maja 2017 w C# przez criser Nowicjusz (210 p.)
0 głosów
1 odpowiedź 577 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...