» »

Java program

Java program

«
1
2

nokaut240 ::

Delam nek program v Javi, pa ne deluje tako, kot sem pričakoval. Tako da če kdo lahko pomaga, naj mi piše na ZS, pa mu bom poslal svojo kodo pa navodila kako in kaj.

Mavrik ::

Napiši kaj rabiš sem.
The truth is rarely pure and never simple.

nokaut240 ::

Če bom sem napisal, potem bodo drugi prekopirali (je domača naloga)

kunigunda ::

A ni fajn, da ce drugi tud ne znajo tko kot ti, da si tud pomagajo ?

Spura ::

nokaut240 je izjavil:

Če bom sem napisal, potem bodo drugi prekopirali (je domača naloga)

A samo jst vidim ironijo tega.

nokaut240 ::

kunigunda je izjavil:

A ni fajn, da ce drugi tud ne znajo tko kot ti, da si tud pomagajo ?


Verjetno si 200 ljudi ne bo samo pomagalo, ampak bodo eni kar direktno prekopirali, in potem bomo imeli vsi isto.

b00mer ::

Bos dobu samo hint ok ?

nokaut240 ::

A mi lahko kdo razloži, kaj pomeni static pred String[] tabela...

kunigunda ::

Sam ce oblubs, da si prej vsaj en link od googlovih 153mio zadetkov pogledu kaj je to...

killa bee ::

mene tut zanima kaj pomen static. Zanima me tudi če pomen isto za class, f-jo in spremenljivko.

Spura ::

static pomeni, da je stvar vidna na nivoju razreda in nima zveze s posameznimi primerki razreda

kaj static pomeni pri razredih, se raje ne ukvarjite, preden boste mal bolj obvladal.

killa bee ::

A ni razred samo na "papirju" vse kar obstaja(v pomnilniku) so primerki razreda imenovani objekti.

Zgodovina sprememb…

Spura ::

Ne, razred tudi obstaja v pomnilniku. In sicer kot objekt razreda Class. Nekje morajo bit spravljene static spremenljivke. Poleg tega nekje mora bit spravljena koda (bytecode) od funkcij razreda.

killa bee ::

aha, seprav če je funkcija static pol je samo enkrat v pomnilniku če pa ni static pol je pa za vsak primer objekta

kunigunda ::

Na slovenske izraze se ne spoznam, vendar mislim da je razred isto kot objekt (se pravi Class).

Static pomeni, da se bo v memorijo nalozil le enkrat in bo potem skoz prisoten (brez referenc za garbage collector) ne glede kolikokrat
se objekt s Static metodo kreira. Isto za spremenljivke.

Prav tako lahko static metodo klicemo znotraj objekta, ne da bi ga kreirali.

Zgodovina sprememb…

killa bee ::

class ni isto kot objekt

Spura ::

killa bee je izjavil:

aha, seprav če je funkcija static pol je samo enkrat v pomnilniku če pa ni static pol je pa za vsak primer objekta

Ne, funkcija je vedno v memoriju samo enkrat. Pravim da je class v memoriju samo enkrat, in class so metode ter staticne spremenljivke. Staticne metode so pa sintaksno drugacne od navadnih metod v tem, da lahko dostopajo samo do staticnih spremenljivk in za klic ne potrebujejo primerka razreda in potem seveda nimajo "this" primerka razreda. Lej implementacija, kje in kolikokrat je kaj v memoryu je ena stvar, sintaksa jezika in scope je pa druga.

kunigunda je izjavil:


Prav tako lahko static metodo klicemo znotraj objekta, ne da bi ga kreirali.

Static metodo lahko klicemo od kjerkoli (ce je vidna iz tiste tocke v programu - npr. public metoda na public classu).

kunigunda ::

killa bee je izjavil:

class ni isto kot objekt

Class je definicija objekta. Objekt nastane z instanco (new)

Spura ::

Class je definicija razreda objektov. Razred je skupina stvari z dolocenimi skupnimi lastnostmi npr. cenovni razred.

kunigunda ::

Class je angleska beseda za razred

sirotka ::

razred ni isto kot objekt? In ja static je, da jo lahko kličeš od povsod.

kunigunda ::

Objekt bi nekako lahko interpretirali kot memorijska implementacija instance ki jo definira razred.

Spura ::

Ne vem kva je tle jebeni problem. Razred je razred, objekt pa objekt. Objekt je instanca nekega razreda, instanca je relacijski opis in ni samostojen koncept. Nehite ze enkrat mutit.

kunigunda ::

Pisemo da se bo kdo naucil. Mutis pa ti ker v zadnjih dveh postih pises netocne definicije kar sam se bolj zmedejo.

- Instanca ni relacijski opis in je samostojna

Mavrik ::

- Instanca ni relacijski opis in je samostojna


Kaj to sploh pomeni? A znaš to razložit?
The truth is rarely pure and never simple.

kunigunda ::

Tud jest ne vem tocno kaj je spura mislu, definitivno pa instanca ni nikakrsen opis, temvec navaden kreiran objekt dolocenega razreda

Marat ::

Objekt je instanca razreda (razred je po angleško class).

Po domače povedano: razred je tiskarska matrica, objekt je pa vsak odtis na papirju ki je bil narejen s to matrico. Dovolj jasno?

mallard ::

Instanci bi se po slovensko reklo "primerek" (IMHO). Da se boste lažje kregal ;)

killa bee ::

če govoriš po domače ne uporabljat izraz tiskarska matrica IMHO

Zgodovina sprememb…

Spura ::

kunigunda je izjavil:

Tud jest ne vem tocno kaj je spura mislu, definitivno pa instanca ni nikakrsen opis, temvec navaden kreiran objekt dolocenega razreda
Prvo kot prvo, je Mavrik mislu tebe, da obrazlozi.
Objekt je objekt. Objekt je primerek razreda, in kot sm napisal beseda primerek opisuje relacijo med pojmoma objekt in razred. Marko je lastnik avtomobila. Lastnik je opis relacije. Relacijski opisi imajo samostojno pomen samo izjemoma.

kunigunda je izjavil:

Pisemo da se bo kdo naucil. Mutis pa ti ker v zadnjih dveh postih pises netocne definicije kar sam se bolj zmedejo.

- Instanca ni relacijski opis in je samostojna

Da jst mutim pri definicijah mi rece model ki je rekel:

kunigunda je izjavil:

vendar mislim da je razred isto kot objekt (se pravi Class).

in pa:

kunigunda je izjavil:

Prav tako lahko static metodo klicemo znotraj objekta, ne da bi ga kreirali.

in pa:

kunigunda je izjavil:

Objekt bi nekako lahko interpretirali kot memorijska implementacija instance ki jo definira razred.


Kar je vse zelo zelo zelo narobe in kaze da nimas niti najmanjse kognicije kaj ti koncepti so in nima smisla da se trudis z definicijami. Vazno da ti koda dela.

kunigunda ::

Ocitno si nov v objektnem programiranju. Karkoli sem povedal drzi.

kunigunda ::

Da ti se razlozim:

- Objekt je primerek razreda, in kot sm napisal beseda primerek opisuje relacijo med pojmoma objekt in razred.
Primerek(instance) nic ne opisuje.

- vendar mislim da je razred isto kot objekt (se pravi Class)
Ko sem jaz zacel se ni bilo nobenega slovenskega izraza niti se jih ne nameravam ucit ker so mi smesni.

- Prav tako lahko static metodo klicemo znotraj objekta, ne da bi ga kreirali.
True

- Objekt bi nekako lahko interpretirali kot memorijska implementacija instance ki jo definira razred.
True

sirotka ::

Madona ste se zakačl na tole:) Kak program rabiš?

darkkk ::

kunigunda je izjavil:

Ocitno si nov v objektnem programiranju. Karkoli sem povedal drzi.


Rofl, sploh na prvi del :)

sandmat ::

hm, kunigunda, tvoj prvi post je pač totalno narobe. Brez zamere, ampak ne izgleda, da popolnoma razumeš.

Razred = class
object = objekt
objekt je instanca razreda (in nikakor ni to kar vse isto, kar si napisal v prvem postu).

Lp

morbo ::

btw, instanci ("primerku") se v slovenski literaturi reče izvod. (da še jaz dodam košček puzzla tej fenomenalni temi :))

@kunigunda, rofl, just stop it please.. :)

smoke ::

kunigunda je izjavil:


- Prav tako lahko static metodo klicemo znotraj objekta, ne da bi ga kreirali.
True

- Objekt bi nekako lahko interpretirali kot memorijska implementacija instance ki jo definira razred.
True


Tole sicer ni Java (in v Javi, to ne dela iz drugih razlogov..), ampak C++. Praviš da se torej komaj z kreacijo objekta ustvari primerek razreda v spominu. Razloži zakaj tale koda deluje, čeprav nisem kreiral nobenega objekta, in metoda ni static :):

#include <iostream>
using std::cout;

class T
{
public:
    T() = default;
    void print() { cout << "hello, world\n"; }
};

int main()
{
    T* t = nullptr;
    t->print();
    return 0;
}

kunigunda ::

sandmat je izjavil:

hm, kunigunda, tvoj prvi post je pač totalno narobe. Brez zamere, ampak ne izgleda, da popolnoma razumeš.

Razred = class
object = objekt
objekt je instanca razreda (in nikakor ni to kar vse isto, kar si napisal v prvem postu).

Lp


Jao, k da bi govorl razlicne jezike. Sej jest to cel cajt govorim.

kunigunda ::

@smoke, ce nisi kreiral objekta je irelevantno govorit o objektu.

morbo ::

kunigunda je izjavil:

@smoke, ce nisi kreiral objekta je irelevantno govorit o objektu.

Iz tega logično sledi da je ta tvoja izjava povsem nerelevanta:

Prav tako lahko static metodo klicemo znotraj objekta, ne da bi ga kreirali.

kunigunda ::

Res je, prav bi bilo da static metodo lahko klicemo znotraj razreda, ne da bi kreirali objekt

smoke ::

Kak to mislis "znotraj" razreda? No, sicer je pa Spura povedal pravilno definicijo ze na zacetku teme.. tak da ne razumem kaj je toliko za debatirat..

mallard ::

@smoke
Sej tudi to ne "deluje", ampak je UB. Malo za lase privlečen primer, se ti ne zdi? Malo spremeniš primer in dobiš lep crash:

struct T {
    int i;
    T() : i(0) {}
    void foo() { i = 42; }
};

int main()
{
    T* t = nullptr;
    t->foo();
}

Je res, da se metode razredov naložijo v spomin ob zagonu, kar pa še ne pomeni, da jih lahko (razen statičnih) kličeš brez instance objekta.

kunigunda ::

Kako pa C++ alocira staticne metode ? Ga ne poznam tolk. Pri Javi se staticne metode nalozijo v poseben Permanent Heap (locen od VM heapa).

Zgodovina sprememb…

smoke ::

mallard je izjavil:

@smoke
Sej tudi to ne "deluje", ampak je UB. Malo za lase privlečen primer, se ti ne zdi? Malo spremeniš primer in dobiš lep crash:


struct T {
int i;
T() : i(0) {}
void foo() { i = 42; }
};

int main()
{
T* t = nullptr;
t->foo();
}

Je res, da se metode razredov naložijo v spomin ob zagonu, kar pa še ne pomeni, da jih lahko (razen statičnih) kličeš brez instance objekta.



Okej, mogoče je res, ampak point je bil, da je vsak razred že primerek samega sebe. (torej ni samo "šablona" po kateri se objekti kreirajo) Vsebuje stvari ki so skupne za vse objekte, torej metode (tiste ki niso virtualne) in pa statične spremenljivke. :) This pointer je pa samo kazalec do spomina, ki vsebuje stvari, ki so objektne. V končni fazi se pa kličejo iste metode ne glede na to na kateri objekt se sklicuješ, ampak seveda z različnim (skritim) this pointer argumentom.

Lep pozdrav

kunigunda ::

Mogoce pa C++ ze sam naredi instanco z definicijo razreda. C++ itak ni cisti objektni jezik, kot je Java.

kunigunda ::

Aha sem pogledal. Ce v C++ ne uporabis new za instanco, sam kreira objekt ko klices razred. Razlika je, da v tem primeru
kreira zacasni objekt na stack-u, medtem ko pri instanci z "new" kreira objekt na Heap-u.

smoke ::

V primeru da napišeš tako:
Test t;


Se prostor za ta objekt rezervira na stacku že ob prevajanju. Ampak konstruktor se pa zažene komaj ob runtime-u. Čeprav tut to ni pravilo. Če imaš konstruktor ki je "constexpr", lahko že prevajalnik incializira objekt ob prevajanju, če so vrednosti znane.

Če pa stvar narediš tako:

Test* t = new Test();


Se pa na stacku rezervira prostor samo za kazalec do objekta to pa je lahko 4 bajte (na 32bit arhitekturi) ali 8 bajtov (na 64bit arhitekturi).

Kaj se pa tiče "objektnosti" C++ jezika. To da ni "pravi" objektni jezik je malo butasto. Res da ne rabiš objektno pisat ampak tut v Javi ne rabiš. V Javi to zgleda tako da imaš pač kr vse v main classu, v C++ pa tako da classov sploh ne uporabiš. Ampak stvar je ista, v obeh primerih efektivno koda ni objektna.

kunigunda ::

Razlika je da je pri javi ze osnovni modul razred ki naredi ob runtimu objekt docim je pri c++ osnovni modul navadni. To sem mel v mislih se pravi je java od zacetka objektna

Senitel ::

Ni čist res. Še zmer moraš na roke instancirat ta razred. Sam entry point je še zmer statična metoda.
«
1
2


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] Castanje

Oddelek: Programiranje
91545 (1400) fiction
»

Rekurzija v javi z ArrayList

Oddelek: Programiranje
81589 (1432) marjan_h
»

c# class

Oddelek: Programiranje
342277 (1871) japol
»

[JAVA] zaustavitev niti (threadov)

Oddelek: Programiranje
223184 (3184) morbo
»

[c++] globalne spremenljivke (extern)

Oddelek: Programiranje
71592 (1465) Vesoljc

Več podobnih tem