Opis cechy przedmiotu za pon\mocą klas.

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?

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

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

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.

0

Kompilator wywala bledy.
Jakie?

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;
	}
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;}
  1. niepoprawnie podałeś parametry metody Auto w klasie Samochod1. Powinno być s1.Auto(195,165,450,2200,"zielony","toyota");
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());
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.

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