Opis cechy przedmiotu za pon\mocą klas.

Odpowiedz Nowy wątek
2006-11-15 14:49

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

Witam wszystkich.
Na wstępie chcę zaznaczyć, że jestem tutaj nowy, ale doskonale znam zasady jakie funkcjonują na Forach, sam się też często udzielam (FLASH, Obiektowe bazy danych). Doskonale wiem że z zasady raczej nie pomaga się ludziom którzy chcą gotowy program, ale wiem też doskonale że nie zawsze wszyscy chcą iść na latwiznę, ale czasem dostaje się jakieś zadanie które przerasta aktualną wiedzę.

No i tak jest właśnie w moim przypadku. Zmienił mi się prowadzący ćwiczenia, i zmieniło się wszystko, a raczej zawaliło Sad Koleś założył że my już w zasadzie powinniśmy znać JAVE (nie wiem czy po 6 zajęciach zna się już JAVE, ale mi sie to nie udało Smile

Dość Historii, przejde do sedna sprawy.
Zajmujemy się teraz klasami itp.

Koleś kazał nam napisać program, który wykorzysta klasy do opisy jakiegoś przedmioty ewentualnie zdarzenia. Poszukałem i poczytałem mniej więcej wiem jak zrobić taki najłatwiejszy opis klasy, mianowicie opis punktu na plasczyźnie.

Zrobiłem coś takiego


import java.lang.*;
class Punkt  // klasa nazywa sie punkt
{
   int x,y; //dwie zmienne typu intiger namiarowna nasz pinkt

   void zmien(int wX, int wY) // metoda zmien posiada dwa parametry
   {   
      x=wX; //do x podstawiamy wX
      y=wY; // do y podstawiamy wY
   }
      int podajX() // metoda podawania x i y
      {return x;} //zwraca x
      int podajY()
      {return y;}

      void przesun(int dx, int dy) //kolejna metdoda przesowanie
      {x+=dx; y+=dy;}   //roznice miedzy odlegloscia punktu

      double odleglosc(Punkt p)
      {return Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));} //wzor na odleglosc
}
   public class punkt1
{
      public static void main(String args[])
      {
         Punkt p1 = new Punkt(); //tworzenie punktu
         p1.zmien(1,3); //namiary na punkt
         System.out.println("Wsp X punktu 1 to "+p1.podajX()); //wyswietla wsp x punktu
         System.out.println("Wsp Y punktu 1 to "+p1.podajY()); //wyswietla wsp y punktu

         Punkt p2 = new Punkt(); // tworzenie drugiego punktu
         p2.zmien(2,5); // jego wspolrzedne
         System.out.println("Wsp X punktu 2 to "+p2.podajX());
         System.out.println("Wsp Y punktu 2 to "+p2.podajY());
         System.out.println("Odleglosc p1 od p2 wynosi "+p1.odleglosc(p2)); //podaje nam odleglos miedzy punktami

      }
}

Mniej więcej to rozumiem, wiem że nie jest skończone, bo nie zastosowałem przesunięcia punktu.
Wysłałem kolesiowi, a ten z tekstem że ma być wszystko prócz punktu Sad
No i tutaj jest problem. Mam opisać dowolnie co np: Psa za pomocą klasy, albo Monitor ( czy zalaczony, czy nie, jaki kolor, jaka rozdzielczość itp) niby łatwe, ale ja kompletnie nie wiem jak się mam za to zabrać, z punktem jakoś łatwiej poszło bo miałem w książkach dość jasne przykłady. Tutaj niestety stoję w miejscu.

Myślałem żeby opisać np Samochód (jaka pojemność, jaki kolor, rok produkcji, czy światła są zapalone czy nie, czy pięć drzwi itp.)

Czy ktoś mógłby mi pomóc??? Może być dowolne przedmiot czy zjawisko, może być coś co już wcześniej ktoś wykonał, ja sobie to pozmieniam odpowiednio żeby mi pasowało. Może być początek, cokolwiek byle by mi tylko pomogło.

Pozdrawiam

EDIT:

Ok zdecydowałem się na samochód.
Będę wiedział jak opisać wszystkie cechy liczbowe, typu pojemność ilość drzwi i wymiary:

import java.lang.*;

class Samochod  // klasa nazywa sie samochod
{
        int a,b,c,x,y,z;      // zmienne typu int wykorzystywane do opisu cech samochodu
        void wymiary(int szerX, int wysY, int dlugZ) // parametry wymiarow samochodu

    {
        x=szerX;    //  x oznacza szerX
        y=wysY;     //  y oznacza wysY
        z=dlugZ;    //  z oznacza dlugZ

    }

    int PdajSzerokosc() // podawanie szerokosci samochodu
    {return x;} // zwraca wartosc x czyli szerokosc

    int PodajWyskokosc() // podawanie wyskokosci samachodu
    {return y;} // zwraca wartosc y czyli wysokosc

    int PodajDlugosc() //podawanie dlugosci samochodu
    {return z;} // zwraca wartosc z czyli dlugosc samochodu

Nie wiem natomiast jak zrobić abym mógł podawać też kolor samochodu, tzn analogicznie jak jest w przykładnie z punktem, jak będę dodawał nowy samochód podawał jego właściwości żebym mogł wpisać np ze jest zielony. Czy muszę stworzyć jakąś tablicę znaków. Powiem szczerze ze nie wiem jak to zrobić.

A i czy dozo będzie mieszania jakbym chciał te wszystkie parametry wprowadzać z programu? a nie w kodzie tak jak teraz?

Pozostało 580 znaków

2006-11-15 15:59

Rejestracja: 13 lat temu

Ostatnio: 8 lat temu

0

wszystko zależy od tego, czy miałeś już wprowadzone pojęcie konstruktora.
jeśli tak: Twoje problemy można rozwiązać konstruktorem zdefiniowanym przez Ciebie.
jeśli nie: każdy obiekt należący do danej klasy jest "konstruowany" za pomocą specjalnej metody nazywanej konstruktorem. Jest ona używana w momencie powoływania nowego obiektu do życia (a więc podczas użycia operatora new). Metoda ta nic nie zwraca ( to nie oznacza, że zwraca void!!!) i nazywa się tak samo jak klasa - w Twoim przypdaku Samochód. W tym kodzie, który podałeś nie zadeklarowałeś konstruktora - jest on więc wywoływany niejawnie, bez parametrów.

Istnieje jednak możliwość zainicjowania parametrów obiektu właśnie dzięki zadeklarowaniu i użyciu konstruktora z parametrami. W Twoim przypadku mogłoby to wyglądać następująco:

mport java.lang.*;

class Samochod  // klasa nazywa sie samochod
{
     int a,b,c,x,y,z;      // zmienne typu int wykorzystywane do opisu cech samochodu
         String kol, mar;

         Samochod(int szerX, int wysY, dlugZ, String kolor, String marka) { //itd.
                x=szerX;    //  x oznacza szerX
        y=wysY;     //  y oznacza wysY
        z=dlugZ;    //  z oznacza dlugZ
                kol = kolor;
                mar = marka;
        }

       void wymiary(int szerX, int wysY, int dlugZ) // parametry wymiarow samochodu

    {
        x=szerX;    //  x oznacza szerX
        y=wysY;     //  y oznacza wysY
        z=dlugZ;    //  z oznacza dlugZ

    }

    int PodajSzerokosc() // podawanie szerokosci samochodu
    {return x;} // zwraca wartosc x czyli szerokosc

    int PodajWyskokosc() // podawanie wyskokosci samachodu
    {return y;} // zwraca wartosc y czyli wysokosc

    int PodajDlugosc() //podawanie dlugosci samochodu
    {return z;} // zwraca wartosc z czyli dlugosc samochodu

         void zmienKolor(String kolor) {
                kol = kolor;
         }
         int PodajKolor() {
                return kol;
         }
}

potem w czasie inicjalizacji obiektu piszesz na przykład:

Samochod s = new Samochod(4200, 1700, 1400, zielony, porsche);

napisałem także w kodzie wyżej przykładowe funkcje - jedna do ustawiania koloru, druga do jego pobierania - pozwala to zmienić cechę obiektu, która została wcześniej zainicjalizowana.

np. chcesz zmienić kolor na czerwony to robisz:
s.zmienKolor(czerwony);

na koniec dodam, że (z tego co pamiętam), konstruktor powinien znajdować się w klasie przed innymi metodami.

pozdrawiam


Pozostało 580 znaków

2006-11-16 12:51

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

Dzięki za pomoc.
Już wiem jak to mniej więcej zrobić. Jak skończę wkleję to tutaj i pomyślimy jak zrobić żeby parametry samochodu wklepywać w oknie programy a nie w kodzie.

Pozdrawiam

Pozostało 580 znaków

2006-11-17 23:07

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

Jednak poleglem :(

Zamotalem sie w tym wszystkim.

import java.lang.*;

class Samochod  // klasa nazywa sie samochod
{
        int c,x,y,z;      // zmienne typu int wykorzystywane do opisu cech samochodu
        String kol, mar; // zmienne do opisu koloru i marki

        void Auto(int szerX, int wysY, int dlugZ, int pojemnosc, String kolor, String marka) // parametry wymiarow samochodu

    {
        x=szerX;    //  x oznacza szerX
        y=wysY;     //  y oznacza wysY
        z=dlugZ;    //  z oznacza dlugZ
        c=pojemnosc; //  c oznacza pojemnosc
        kol=kolor;
        mar=marka;      
    }

    int PdajSzerokosc() // podawanie szerokosci samochodu
    {return x;} // zwraca wartosc x czyli szerokosc

    int PodajWyskokosc() // podawanie wyskokosci samachodu
    {return y;} // zwraca wartosc y czyli wysokosc

    int PodajDlugosc() //podawanie dlugosci samochodu
    {return z;} // zwraca wartosc z czyli dlugosc samochodu

    int PodajPojemnosc()  //podawanie pojemnosci samachodu
    {return c;} //zwraca wartosc c czyli pojemnosc samochodu

    void ZmienKolor(String kolor)
    {
        kol=kolor;   //  kol oznacza kolor
    }
    int PodajKolor()
    {return kol;}

    void ZmienMarke(String marka)
    {
        mar=marka;  //  mar zonacza marke
    }
    int PodajMarke()
    {return mar;}

}
        public class Samochod1

{
    public static void main(String args[])          

    {
            Samochod s1 = new Samochod();       
            s1.Auto(195,165,450,2200,zielony,toyota); 
            System.out.println("Szerokosc samochodu to "+s1.PdajSzerokosc()); //wyswietla wsp x punktu
            System.out.println("Wysokosc samochodu to "+s1.PodajWyskokosc()); //wyswietla wsp y punktu
            System.out.println("Dlugosc samochodu to "+s1.PodajDlugosc());
            System.out.println("Pojemnosc samochodu to "+s1.PodajPojemnosc());   // itd
    }

}

Kompilator wywala bledy.

Pozostało 580 znaków

2006-11-18 00:04

Rejestracja: 15 lat temu

Ostatnio: 3 miesiące temu

0

Kompilator wywala bledy.
Jakie?

Pozostało 580 znaków

2006-11-18 00:15

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

';' expected sek w tym ze wywala to w miejscu gdzie nie stawia sie nigdy srednika


    void ZmienKolor(String kolor)
---> <b>TUTAJ</b>   
    int PodajKolor()
    {return kol;
    }

Pozostało 580 znaków

2006-11-18 09:52

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Masz dwa błędy:

  1. w metodach podających kolor i markę użyłeś typu int a kolor i marka jest typu String
    String  PodajKolor()
    {return kol;}
  2. niepoprawnie podałeś parametry metody Auto w klasie Samochod1. Powinno być s1.Auto(195,165,450,2200,"zielony","toyota");

Pozostało 580 znaków

2006-11-18 10:27

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

Wiec jest następujący problem. Program niby działa ale jak go odpalam wartości liczbowe są poprawnie wyświetlane natomiast kolor i marka wyskakują jako null

import java.lang.*;

class Auto  // klasa nazywa sie samochod

{
        int c,x,y,z;      // zmienne typu int wykorzystywane do opisu cech samochodu
        String kol,mar; // zmienne do opisu koloru i marki

        void Auto(int szerX, int wysY, int dlugZ, int pojemnosc, String kolor, String marka) // parametry wymiarow samochodu

    {
        x=szerX;    //  x oznacza szerX
        y=wysY;     //  y oznacza wysY
        z=dlugZ;    //  z oznacza dlugZ
        c=pojemnosc; //  c oznacza pojemnosc
    }

    int PdajSzerokosc() // podawanie szerokosci samochodu
    {return x;} // zwraca wartosc x czyli szerokosc

    int PodajWyskokosc() // podawanie wyskokosci samachodu
    {return y;} // zwraca wartosc y czyli wysokosc

    int PodajDlugosc() //podawanie dlugosci samochodu
    {return z;} // zwraca wartosc z czyli dlugosc samochodu

    int PodajPojemnosc()  //podawanie pojemnosci samachodu
    {return c;} //zwraca wartosc c czyli pojemnosc samochodu

    void ZmienKolor(String kolor)
    {kol=kolor;}

    String PodajKolor()
    {return kol;}

    void ZmienMarke(String marka)
    {mar=marka;}

    String PodajMarke()
    {return mar;}
}
        public class Auto1
    {
    public static void main(String args[])          

    {
            Samochod s1 = new Samochod();       
            s1.Auto(195,165,450,2200,"zielony","toyota"); 
            System.out.println("Szerokosc samochodu to "+s1.PdajSzerokosc()); //wyswietla wsp x punktu
            System.out.println("Wysokosc samochodu to "+s1.PodajWyskokosc()); //wyswietla wsp y punktu
            System.out.println("Dlugosc samochodu to "+s1.PodajDlugosc());
            System.out.println("Pojemnosc samochodu to "+s1.PodajPojemnosc());   // itd
            System.out.println("Kolor samochodu to "+s1.PodajKolor());
            System.out.println("Marka samochodu to "+s1.PodajMarke());
    }

}

Wyświetlanie marki i koloru wywołują:

System.out.println("Kolor samochodu to "+s1.PodajKolor());
System.out.println("Marka samochodu to "+s1.PodajMarke());

Pozostało 580 znaków

2006-11-19 11:24

Rejestracja: 13 lat temu

Ostatnio: 13 lat temu

0

Witaj.
Ja też jestem początkujacym użytkownikiem Javy. Przeglądnołem Twój kod, poprawiłem i skompilowałem u siebie wiec tak powinno być dobrze :

import java.lang.*;

class Auto  // klasa nazywa sie samochod

{
                int c,x,y,z;      // zmienne typu int wykorzystywane do opisu cech samochodu
                String kol,mar; // zmienne do opisu koloru i marki

                void Auto(int szerX, int wysY, int dlugZ, int pojemnosc, String kolor, String marka) // parametry wymiarow samochodu

        {
                x=szerX;         //  x oznacza szerX
                y=wysY;         //  y oznacza wysY
                z=dlugZ;        //  z oznacza dlugZ
                c=pojemnosc; //  c oznacza pojemnosc
                kol=kolor;//  kol oznacza kolor !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                mar = marka; // mar oznacza marke !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        }

        int PdajSzerokosc() // podawanie szerokosci samochodu
        {return x;} // zwraca wartosc x czyli szerokosc

        int PodajWyskokosc() // podawanie wyskokosci samachodu
        {return y;}        // zwraca wartosc y czyli wysokosc

        int PodajDlugosc() //podawanie dlugosci samochodu
        {return z;} // zwraca wartosc z czyli dlugosc samochodu

        int PodajPojemnosc()  //podawanie pojemnosci samachodu
        {return c;} //zwraca wartosc c czyli pojemnosc samochodu

        void ZmienKolor(String kolor)
        {kol=kolor;}

        String PodajKolor()
        {return kol;}

        void ZmienMarke(String marka)
        {mar=marka;}

        String PodajMarke()
        {return mar;}
}

i drugi plik :

public class Auto1
        {
        public static void main(String args[])                        

        {
                        Auto s1 = new Auto(); // tutaj musi byc - skad pobierasz 
                        //dane o objekcie auto - z klasy Auto- czyli z pliku o tej samej nazwie                
                        s1.Auto(195,165,450,2200,"zielony","toyota"); 
                        System.out.println("Szerokosc samochodu to "+s1.PdajSzerokosc()); //wyswietla wsp x punktu
                        System.out.println("Wysokosc samochodu to "+s1.PodajWyskokosc()); //wyswietla wsp y punktu
                        System.out.println("Dlugosc samochodu to "+s1.PodajDlugosc());
                        System.out.println("Pojemnosc samochodu to "+s1.PodajPojemnosc());   // itd
                        System.out.println("Kolor samochodu to "+s1.PodajKolor());
                        System.out.println("Marka samochodu to "+s1.PodajMarke());
        }

}

W miejscu z zaznaczonymi wykrzyknikami wprowadziłem "swoje".

Pozdrawiam,
Rex_3city.

Pozostało 580 znaków

Odpowiedz

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