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

C# obiektowość zadanie

Object Storage Arubacloud
0 głosów
384 wizyt
pytanie zadane 11 grudnia 2019 w C i C++ przez enero Początkujący (330 p.)

Czesc, mam zadanie do wykonania, wklejam odrazu jego tresc:

  1. Zdefiniować klasę Books. Utworzyć 10-elementową tablicę obiektów klasy do przechowywania in- formacji o książkach (author, title, year). Klasa musi zawierać metody Set i Get dla wszystkich pól

    danych oraz funkcje wczytującą i wyświetlającą dane. Program powinien w pętli wpisywać dane do

    tablicy obiektów i w kolejnej pętli wypisać informacje dla wszystkich pozycji na ekranie.

Dopiero zaczynam z nauka obiektowosci, dlatego zadanie wykonalem, jednak nie jestem pewien czy dobrze, na pewno da sie lepiej. Nie do konca rozumiem tresc zadania. Gdyby ktos mogl rzucic okiem na moj kod i powiedziec czy jest ok i pokrywa sie z trescia czy moze cos poprawic, moze ktos doradzi jak ulepszyc zadanie. Z gory dzieki.

using System;

namespace cwiczenie
{
    class Program
    {
        static void Main(string[] args)
        {
            Books zad = new Books("Noname","No title",0);

            zad.Read();
            zad.Print();


            Console.ReadKey();
        }
    }

    class Books
    {
        private object[] tab = new object[10];
        private string author;
        private string title;
        private int year;
        public string GetAuthor() { return author; }
        public string GetTitle() { return title; }
        public int GetYear() { return year; }
        public void SetAuthor(string a) { author = a; }
        public void SetTitile(string t) { title = t; }
        public void SetYear(int y) { year = y; }

        public Books(string a, string t, int y)
        {

            author = a;
            title = t;
            year = y;
        }

        public void Read()
        {
            for (int i = 0; i < 1; i++)
            {
                Console.Write("Podaj autora ksiazki: ");
                tab[0] = Console.ReadLine();
                Console.Write("Podaj tytul ksiazki: ");
                tab[1] = Console.ReadLine();
                Console.Write("Podaj rok wydania ksiazki: ");
                tab[2] = Console.ReadLine();
                Console.Write("Informacje: ");
                tab[3] = Console.ReadLine();
                Console.Write("Informacje: ");
                tab[4] = Console.ReadLine();
                Console.Write("Informacje: ");
                tab[5] = Console.ReadLine();
                Console.Write("Informacje: ");
                tab[6] = Console.ReadLine();
                Console.Write("Informacje: ");
                tab[7] = Console.ReadLine();
                Console.Write("Informacje: ");
                tab[8] = Console.ReadLine();
                Console.Write("Informacje: ");
                tab[9] = Console.ReadLine();
            }

            
        }

        public void Print()
        { 
            for(int i=0; i<1;i++)
            {
                Console.WriteLine("Autor: " + tab[0]);
                Console.WriteLine("Tytul: " + tab[1]);
                Console.WriteLine("Rok wydania: " + tab[2]);
                Console.WriteLine("Dodatkowe informacje: " + tab[3]);
                Console.WriteLine("Dodatkowe informacje: " + tab[4]);
                Console.WriteLine("Dodatkowe informacje: " + tab[5]);
                Console.WriteLine("Dodatkowe informacje: " + tab[6]);
                Console.WriteLine("Dodatkowe informacje: " + tab[7]);
                Console.WriteLine("Dodatkowe informacje: " + tab[8]);
                Console.WriteLine("Dodatkowe informacje: " + tab[9]);

            }

        }
       

        
       
    }
    
}

 

komentarz 12 grudnia 2019 przez enero Początkujący (330 p.)
edycja 12 grudnia 2019 przez enero

Udalo mi sie zmienic na cos takiego:

using System;

namespace cwiczenie
{
    class Program
    {
        static void Main(string[] args)
        {
            Books zad1 = new Books();
            zad1.Author = "Noname";
            zad1.Title = "Notitle";
            zad1.Year = "0";
            zad1.Read();
            zad1.Print();

            
            Console.ReadKey();
        }
    }

    class Books
    {
        private string _author;
        private string _title;
        private string _year;
        public string Author { get { return _author; } set { _author = value; } }
        public string Title { get { return _title; } set { _title = value; } }
        public string Year { get { return _year; } set { _year = value; } }
        Books[] tab1 = new Books[3];

        public void Read()
        {
            Console.WriteLine("Podaj Autora,Tytul oraz rok wydania ksiazki: ");
            for(int i=0; i<tab1.Length; i++)
            {
                tab1[i] = new Books();
                Console.Write("Podaj autora "+(i+1)+" ksiazki: ");
                tab1[i]._author = Console.ReadLine();
                Console.Write("Podaj tytul " + (i + 1) + " ksiazki: ");
                tab1[i]._title = Console.ReadLine();
                Console.Write("Podaj rok produkcji " + (i + 1) + " ksiazki: ");
                tab1[i]._year = Console.ReadLine();
            }
        }

        public void Print()
        {
            Console.WriteLine("Wyswietlam: ");
            for(int i=0; i<tab1.Length; i++)
            {
                Console.WriteLine("Ksiazka nr."+(i+1)+" Autor: "+tab1[i]._author+" Tytul: "+tab1[i]._title+" Rok wydania: "+tab1[i]._year);
            }
        }
       
    }
    
}

Byc moze troche lepiej, nie do konca jeszcze rozumiem zastosowanie tych properties, moglbym prosic o objasnienie, gdy nie wpisujac nic do tablicy na koncu wyswietlalo mi te podstawowe wartosci z set'erow np."Noname" itd... Z gory dziekuje za odpowiedz !

 

komentarz 12 grudnia 2019 przez adrian17 Ekspert (344,860 p.)

Wciąż trochę nie tak.

Books[] tab1 = new Books[3];

Książka nie ma trzech książek. Książka ma informacje o swoim autorze, tytule i roku - i tyle. Podobnie, jak samochód nie ma w sobie panelu sterującego dziesięcioma samochodami. Wszystkie pętle po książkach powinny znajdować się poza klasą Książka - po prostu w main()ie.

A znowu na boku.

private string _author;
public string Author { get { return _author; } set { _author = value; } }

To można zapisać dosłownie

public string Author { get; set; }

To automatycznie jest jednocześnie polem, jak i getterem/setterem.

1 odpowiedź

0 głosów
odpowiedź 11 grudnia 2019 przez adrian17 Ekspert (344,860 p.)
wybrane 12 grudnia 2019 przez enero
 
Najlepsza

Trochę inaczej :)

Książka nie ma 10 obiektów. To książek ma być 10. Książka ma tylko autora, tytuł i rok. W main()ie zrób tablicę 10 książek, po czym w pętli wczytaj dane do każdej książki i w osobnej pętli wypisz informacje każdej książki osobno.

(EDIT: a przynajmniej tak to rozumiem. Ale trochę dziwi mnie czemu klasa ma się nazywać Books a nie Book, więc może się mylę.)

A swoją drogą:

        public string GetAuthor() { return author; }
        public void SetAuthor(string a) { author = a; }

To nie Java, tak się nie pisze get/set :) Poczytaj o properties.

class Book
{
    public string Author { get; set; }

 

Podobne pytania

+1 głos
2 odpowiedzi 232 wizyt
pytanie zadane 25 sierpnia 2023 w PHP przez juuunior Początkujący (300 p.)
0 głosów
1 odpowiedź 1,134 wizyt
0 głosów
0 odpowiedzi 547 wizyt
pytanie zadane 5 listopada 2017 w C i C++ przez misiek90 Użytkownik (730 p.)

92,555 zapytań

141,404 odpowiedzi

319,559 komentarzy

61,940 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!

...