[ proNick @ 22.09.2006. 21:04 ] @
Pozdrav!

Mucim se sa nekim stvarima vezanim za Java klase i njihovo nasledjivanje.

Naime, imam klasu TableView koja je extended klase MyTable.

U TableView imam metodu koja se zove setData, i koja je definisana kao

Code:
public void setData(String head[], String sql, String fil, String so, boolean n[]) {....



Takodje, imam jos jednu klasu PrintLayout, koja je podklasa MyTable, tj definisanu kao

Code:
public class PrintLayout extends MyTable...



Da li mozete da mi pomognete da iz PrintLayout pozivam metodu setData?


Hvala unapred!
[ dimitar 16 @ 22.09.2006. 22:00 ] @
Pa napravi objekt klasa TableView i pozovi taj metod preko objekt.

Code:

TableView t = new TableView ();
t.setData (...);
[ aleksandarpopov @ 23.09.2006. 09:09 ] @
Ne bih rekao da ti je dizajn dobar....
Da nasledjujes nesto za stampanje iz tabele... Mozda bi ti bilo bolje da napravis posebnu klasu za stampanje koja ce imati neki metod koji prihvata kao parametar tabelu sa vec popunjenim podacima i to da stampa...
Pozdrav
[ rj444 @ 23.09.2006. 10:09 ] @
Ako u klasi MyTable nemas definisanu metodu setData, a u njenoj podklasi TableView si je definisao, nikako je ne mozes pozivati iz drugih podklasa klase MyTable, koje same nemaju definisanu ovu metodu.

Pozdrav
[ proNick @ 23.09.2006. 17:04 ] @
Koji bi bio drugi nacin da organizujem ceo code, da bih mogao da pozivam setData iz klase PrintLayout?

Pokusavao sam da klasu PrintLayout napravim kao extended klase TableView, ali dobijam poruku

Code:
method <init> not found in class izvestaj.TableView




Veliko hvala unapred!
[ djalfirevic @ 23.09.2006. 18:06 ] @
Jako je tesko ljudima da ti pomognu, kada im das vrlo malo podataka za rad...

Sta program treba da radi???

Neko moze nesto reci, a da ispadne glup samo zato sto ne zna sta program treba da radi.. (bez uvrede naravno)

Meni je prvo palo na pamet, da napravis metodu u PrintLayout koja kao parametar prima objekat TableView, i da onda pozoves metodu setData() tog objekta kojeg si predao kao formalni argument metode...

Mozda je to resenje a mozda nema uopste smisla to sto sam napisao....

[ glorius @ 24.09.2006. 20:14 ] @
Resenje je prosto...

Pomeri interface i implementaciju SetData u MyTable...

Neko ce reci da je migriranje interfejsa u baznu klasu losa stvar ali u ovom slucaju bi i podaci koji se setuju mogli da budu u MyTable klasi da bi bili dostupni ostalim klasama ( ako to zahteva dizajn, naravno )...

[ proNick @ 27.09.2006. 17:48 ] @
Damire,

Hvala na odgovoru, ali ako bih prebacio SetData u MyTable morao bih da menjam jos gomilu stvari u programu, tako da moram da nadjem neko drugo resenje.
[ sosingus @ 30.09.2006. 13:18 ] @
Vidi, moram da ti kazem da ako pokusavas napraviti neki sistem stampe ocito je da si lose modelovao taj deo kao sto ti je i aleksandarpopov rekao ... besmisleno je praviti PrintLayout kao extenziju tabele i nikako neces napraviti dobro resenje ovim putem. Pa ako je tako dobro razmisli o tome...

Druga stvar je da ako hoces putem nasledjivanja da pristupis metodu setData koji se nalazi u TableView klasi, jedini nacin da to ucinis je da PrintLayout nasledi TableView. Tada ces imati dostupne i public i protected metode i od TableView i od MyTable klase.

[ hesstija1985 @ 21.05.2014. 10:51 ] @
Imam i ja jedan problem...da li iko moze pomoci oko resavanja sledeceg>

1. Klase A, B, C, D, E, F, M1 su u paketu P1, i svaka klasa je napisana u posebnom fajl.
a) Otkriti greške u definicijama klasa A, B, C, D, E, F i navesti vrstu greške.

abstract public class A {
int x;
char c;
public A() {x=1;}
public A(char b){super(); c=b;}
abstract public boolean m1();
abstract public int m2(int y);}
}
public class B extends A {
protected String s;
static int n=0;
private int id;
public B(B b) {s=b.s; id=n++;}
B(String h){s=h;super('b');id=n++;}
public boolean m1(){return n>5;}
public int m2(int y){return y*id;}
public static int m3(){return id;}
}
public class C extends B {
private double r;
public C() {}
public C(double r) {this.r=r;}
public C(C o) {super(o);r=o.r;}
final public int m2(int y)
{return (int)(r*y);}
double m4(){return c;}
}
public class D extends C {
public boolean m;
double r;
public D() {}
D(C o) {super(o);m=true;}
public D(boolean t) {super();m=t;}
public int m2(int y)
{return y +(int)r;}
double m4(){return super.r;}
}
public class E extends C {
private String m;
public E() {m="klasaE";}
E(String m,C c){super(m);this.m=m;}
public E(String h) {m=h;}
public void m5(String h){m=h;}
public double m5(int m){return m*x;}
E m5(){return new E("E", this);}
}
public class F extends A {
private double r,p,h;
public F() {}
F(double m,char n){super(n);r=p=h=m;}
public boolean m1(){return r<p;}
public int m3(int y){return y*r;}}

b) U telima metoda main klasa M1 i M2 obeležiti sve ispravne linije koda znakom “+”, a neispravne znakom “–”. Smatrati da su klase A, B, C, D, E, F
ispravno napisane i da svi članovi ovih klasa koji se koriste u M1 i M2 imaju specifikatore pristupa i tipove koji su navedeni.
// Sadržaj fajla M1.java
package P1;
class M1 {
public static void main(String a[]){
A a1 = new A('a');
A a2 = new B("ispit");
A a3 = new C();
B b1 = new C();
B b2 = new B(b1);
C c1 = new E("ispit");
C c2 = new C(a1);
C c3 = new D(c1);
A a4 = new D(b2);
B b3 = new E("i", c1);
D d1 = new E();
D d2 = new C();
D d3 = new D(false);
E e1 = new E('t');
E e2 = new F(1, 'a');
E e3 = c3;
E e4 = new E("ispit", d1);
E e5 = e4.m5();
F f1 = e5.m5();
F f2 = c3;
F f3 = new F(a1.x,a1.c);
B b4 = new D(f3.m1());
E e6 = new E(e5.m);
double f = c3.r;
e5.m5("ispit");
double t = B.m3();
String y = B.n;
double u = d1.r + d1.x;
char g = e5.c;
}
}
// Sadržaj fajla M2.java
package P2;
import P1.*;
class M2 {
public static void main(String a[]){
A a1 = new F();
B b1 = new D(true);
C c1 = new C();
D d1 = new D(c1);
E e1 = new E("",c1);
E e2 = e1.m5();
String g = b1.s;
F f1 = new F(2,'b');
int u = B.n;
boolean m = d1.m;}
}