KLASE I OBJEKTI SA PRIMENOM U FIZICI
Klase i objekti su osnovni koncepti u objektno orijentisanom programiranju (OOP) i igraju ključnu ulogu u strukturisanju koda na način koji je lak za razumevanje, održavanje, i proširenje. U kontekstu simulacija u fizici, ove strukture omogućavaju programerima da modeliraju stvarne fizičke sisteme na efikasan i organizovan način. Klase definišu šablone ili nacrte za stvaranje objekata, koji su konkretne instance tih klasa.
Korišćenjem klasa, možemo da grupišemo podatke (npr. osobine kao što su masa, položaj, brzina) i funkcionalnosti (npr. metode za računanje sila, pokreta) u jednu logičnu celinu. Ovo omogućava modularnost koda, gde se različiti delovi programa mogu razvijati i testirati nezavisno, kao i ponovnu upotrebu koda, gde iste klase mogu biti korišćene u različitim delovima programa ili čak u različitim projektima. Na primer, jednom definisana klasa za modeliranje tačke u prostoru može se koristiti i u jednostavnim simulacijama ravni, kao i u kompleksnijim simulacijama sila i pokreta u gravitacionom polju.
Korišćenjem klasa, možemo da grupišemo podatke (npr. osobine kao što su masa, položaj, brzina) i funkcionalnosti (npr. metode za računanje sila, pokreta) u jednu logičnu celinu. Ovo omogućava modularnost koda, gde se različiti delovi programa mogu razvijati i testirati nezavisno, kao i ponovnu upotrebu koda, gde iste klase mogu biti korišćene u različitim delovima programa ili čak u različitim projektima. Na primer, jednom definisana klasa za modeliranje tačke u prostoru može se koristiti i u jednostavnim simulacijama ravni, kao i u kompleksnijim simulacijama sila i pokreta u gravitacionom polju.
Detaljnije o klasama i objektima, metodama, enkapsulaciji, statičnim promenljivima i metodama možete pogledati na web stranici: Klase i objekti
|
|
Za rezervisanje memorije objekta koristimo sledeći obrazac:
tip_podatka naziv_podatka=new konstruktor(parametri_konstruktora);
Za tip podatka se koristi naziv Klase kojoj pripada objekat. Npr. ako objekat pripada klasi Scanner onda bi definicija tog objekta koji ćemo nazvati ucitavac biti:
Scanner ucitavac=new Scanner(System.in);
softverski objekti imitiraju objekte iz prirode, tako da i jedni i drugi imaju:
Klasa objekta je zapravo opis svih objekata koji joj pripadaju, a to su objekti koji imaju iste:
Definisanjem objekta mi smo ga kreirali po opisu (Klasi) i on će imati osobine i metode tamo navedene :
U klasi Scanner postoje navedene neke metode npr:
nextInt() - ova metoda preuzima sa standardnog ulaza podatak koji je korisnik otkucao na tastaturi, konvertuje ga u ceo broj.
nextDouble() - ova metoda preuzima sa standardnog ulaza podatak koji je korisnik otkucao na tastaturi, konvertuje ga u realan broj.
tip_podatka naziv_podatka=new konstruktor(parametri_konstruktora);
Za tip podatka se koristi naziv Klase kojoj pripada objekat. Npr. ako objekat pripada klasi Scanner onda bi definicija tog objekta koji ćemo nazvati ucitavac biti:
Scanner ucitavac=new Scanner(System.in);
softverski objekti imitiraju objekte iz prirode, tako da i jedni i drugi imaju:
- Osobine
- Ponašanje
- Stanje
Klasa objekta je zapravo opis svih objekata koji joj pripadaju, a to su objekti koji imaju iste:
- Osobine
- Ponašanje-opisano metodama
Definisanjem objekta mi smo ga kreirali po opisu (Klasi) i on će imati osobine i metode tamo navedene :
U klasi Scanner postoje navedene neke metode npr:
nextInt() - ova metoda preuzima sa standardnog ulaza podatak koji je korisnik otkucao na tastaturi, konvertuje ga u ceo broj.
nextDouble() - ova metoda preuzima sa standardnog ulaza podatak koji je korisnik otkucao na tastaturi, konvertuje ga u realan broj.
Principi objektno orijentisanog programiranja OOP
U objektno orijentisanom programiranju (OOP), postoji nekoliko osnovnih principa koji su ključni za organizovanje i strukturu koda:
- Nasleđivanje: Omogućava kreiranje novih klasa na osnovu postojećih, tako da nove klase mogu koristiti ili proširiti funkcionalnosti koje su već definisane. Na primer, u fizici, možemo imati osnovnu klasu Telo, iz koje se izvode specifične klase Planeta, Zvezda, i Satelit.
- Enkapsulacija: Ovaj princip podrazumeva skrivanje unutrašnje strukture objekta, tako da se podaci i metode koji se ne trebaju direktno koristiti van objekta zaštite od pristupa spolja. Na primer, masa planeta može biti privatna promenljiva, dok su javne metode dostupne za izračunavanje gravitacione sile ili kretanja.
- Polimorfizam: Omogućava da objekti različitih klasa mogu biti tretirani kao objekti osnovne klase, a specifične metode mogu biti pozvane u zavisnosti od stvarne klase objekta. Na primer, u gravitacionom sistemu, možemo imati listu objekata tipa Telo, koja sadrži planete, zvezde, i satelite, i možemo pozvati metodu za izračunavanje kretanja, pri čemu će se pozvati odgovarajuća implementacija metode za svaku vrstu tela.
Primeri iz fizike sa klasama i objektima
Primer 1-Klase i objekti na primeru tačaka u ravni:
A(2,4) B(5,-2) C(-4,2) A1(1,3) Uočimo da sva tri objekta pripadaju istoj klasi jer imaju iste osobine x i y.
To će biti 3 različite istance(objekata) iste klase Stanje tačke A će se u toku programa promeniti, ali ne i osobine |
Primer 2.1 - Ravnomerno kretanje
Automobil se kreće ravnomerno ka mestu B. Kreirati objekat koji predstavlja auto,ako se zna da mu je početna brzina 4 m/s i početni položaj 5m od početne tačke. Prikaži brzinu i položaj u početnom položaju izračunaj trenutni položaj posle 3 s i prikaži ponovo tekuće podatke. Kako bi se podacili promenili da je početna brzina bila 10m/s Primer 2.2 - Ravnomerno ubrzano kretanje
Izmeniti prethodni primer tako da se automobil kreće ravnomerno ubrzano sa ubrzanjem a(unosi korisnik) |
Rešenje primera 2.1 |
Više raznolikih primera iz klasa i objekata
Pored primera sa tačkama u ravni, možemo razmotriti složeniji fizički sistem kao što je sistem planeta u gravitacionom polju. U ovom slučaju, možemo definisati klasu Planeta koja sadrži osobine poput mase, položaja, i brzine, kao i metode za računanje gravitacione sile koju planeta vrši na druge planete.
Zatim možemo kreirati više objekata ove klase, gde svaki objekat predstavlja jednu planetu u sistemu, na primer, Zemlju, Mars, i Jupiter. Svaka od ovih planeta ima svoje specifične osobine, ali svi objekti koriste iste metode za izračunavanje međusobnih gravitacionih interakcija. Ovaj primer pokazuje kako objekti koji pripadaju istoj klasi mogu modelirati složene međuzavisnosti unutar fizičkog sistema, čineći simulaciju realističnom i fleksibilnom.
Upotrebom OOP principa, ovakav program može lako biti proširen dodavanjem novih planeta ili modifikovanjem postojećih bez potrebe za značajnim promenama u ostatku koda. To je još jedan primer modularnosti i ponovne upotrebe koda, koji su ključni za uspešno modeliranje i simulacije u fizici.
Zatim možemo kreirati više objekata ove klase, gde svaki objekat predstavlja jednu planetu u sistemu, na primer, Zemlju, Mars, i Jupiter. Svaka od ovih planeta ima svoje specifične osobine, ali svi objekti koriste iste metode za izračunavanje međusobnih gravitacionih interakcija. Ovaj primer pokazuje kako objekti koji pripadaju istoj klasi mogu modelirati složene međuzavisnosti unutar fizičkog sistema, čineći simulaciju realističnom i fleksibilnom.
Upotrebom OOP principa, ovakav program može lako biti proširen dodavanjem novih planeta ili modifikovanjem postojećih bez potrebe za značajnim promenama u ostatku koda. To je još jedan primer modularnosti i ponovne upotrebe koda, koji su ključni za uspešno modeliranje i simulacije u fizici.
Nasleđivanje klasa u Javi
Nasleđivanje je jedan od ključnih principa objektno orijentisanog programiranja u Java-i, koji omogućava kreiranje novih klasa na osnovu postojećih. Ovo omogućava da se zajedničke osobine i metode definišu u jednoj osnovnoj klasi, a zatim da se te osobine naslede u izvedenim klasama koje dodaju ili modifikuju specifične funkcionalnosti.
Na primer, u fizici možemo definisati osnovnu klasu Telo, koja sadrži osobine poput mase, položaja, i brzine, kao i metode za računanje kretanja. Iz ove osnovne klase možemo izvesti specifičnije klase, poput Planeta i Zvezda, koje nasleđuju sve osobine i metode klase Telo, ali takođe mogu imati svoje specifične osobine i metode. Na primer, klasa Zvezda može imati dodatnu osobinu kao što je temperatura, dok klasa Planeta može imati metodu za izračunavanje orbite oko zvezde. Ovakva hijerarhija klasa omogućava modularan i fleksibilan dizajn programa, gde se zajednički kod centralizuje u osnovnim klasama, dok specifičnosti se dodaju u izvedenim klasama.
Više o tome možete pročitati na sledećoj web strani: Nasleđivanje klasa
Na primer, u fizici možemo definisati osnovnu klasu Telo, koja sadrži osobine poput mase, položaja, i brzine, kao i metode za računanje kretanja. Iz ove osnovne klase možemo izvesti specifičnije klase, poput Planeta i Zvezda, koje nasleđuju sve osobine i metode klase Telo, ali takođe mogu imati svoje specifične osobine i metode. Na primer, klasa Zvezda može imati dodatnu osobinu kao što je temperatura, dok klasa Planeta može imati metodu za izračunavanje orbite oko zvezde. Ovakva hijerarhija klasa omogućava modularan i fleksibilan dizajn programa, gde se zajednički kod centralizuje u osnovnim klasama, dok specifičnosti se dodaju u izvedenim klasama.
Više o tome možete pročitati na sledećoj web strani: Nasleđivanje klasa
Zadaci za samostalan rad
- Kreiranje klase za simulaciju slobodnog pada: Definišite klasu SlobodanPad koja simulira kretanje tela pod uticajem gravitacije. Neka klasa ima osobine poput početne brzine, visine, i ubrzanja, i metodu koja izračunava trenutni položaj tela u određenom vremenskom intervalu.
- Kreiranje klase za harmonički oscilator: Definišite klasu HarmoničkiOscilator koja simulira oscilacije tela vezanog za oprugu. Neka klasa ima osobine poput amplitude, frekvencije, i faze, i metodu koja izračunava položaj tela u zavisnosti od vremena.
- Kreiranje klase za simulaciju gravitacionog sistema: Na osnovu ranijih primera, proširite simulaciju tako da uključuje interakcije između više planeta u sistemu, koristeći prethodno definisane klase Planeta i Zvezda.
Grananje u programu
U jednostavnim primerima u JAVA programskom jeziku , naredbe su se izvršavale u jednom toku, tj. jedna za drugom, do samog kraja programa. Ponekad se u program neke naredbe izvršavaju pod određenim uslovom.
Npr. posmatrajmo sledeći problem: Za učitane brojeve a i b izračunati vrednost razlomka a/b. Posle deklaracije promenljivih i unosa a i b od strane korisnika dolazimo do dela gde je potrebno izračunati razlomak. Da li se može jednostavno uvesti promenljiva c i izračunati c=a/b ? Poznato je da nije dozvoljeno deljenje sa nulom. To znači, da pre nego što se napiše gore napisana formula, mora prethodno proveriti da li je ispunjen uslov da je b različito od nule. Ako jeste, onda se može napisati formula i ispisati rezultat. U suprotnom, može da se, ili nešto alternativno uradi, npr. da se napiše poruka da nije dozvoljeno deljenje sa nulom, ili da se ne uradi ništa. Zaključujemo da postoje dve varijante izvršenja programa, ili samo jedna, koje zavise od uslova da li je b različito od nule ili ne. To znači da dolazi do grananja u programu i da se grananje vrši na osnovu logičkog podatka ili izraza. |
video - lekcija |
Detaljnije o tome pročitajte na stranici Grananje u programu u programskom jeziku Java
Primeri iz grananja u programu
Primer 3.3- Sustizanje automobila
Dva automobila se kreću konstantnim brzinama v1[m/s] i v2[m/s] u istom pravcu od mesta A ka mestu B i u početnom trenutku se nalaze na udaljenosti s1=5km i s2=40 km od mesta A.
Odrediti da li će prvi auto sustići drugi i kada.
Dva automobila se kreću konstantnim brzinama v1[m/s] i v2[m/s] u istom pravcu od mesta A ka mestu B i u početnom trenutku se nalaze na udaljenosti s1=5km i s2=40 km od mesta A.
Odrediti da li će prvi auto sustići drugi i kada.
Dodatni primeri
Primer 3.4- Odbojka Servis
Pogledati primer 26(teža varijanta) i zadatak 13(lakša varijanta) i uputstvo na sledećem linku Grananje u programu primeri
Pogledati primer 26(teža varijanta) i zadatak 13(lakša varijanta) i uputstvo na sledećem linku Grananje u programu primeri
Prethodno
|< Java i simulacije u fizici |