- Táncolni még nem tud, de stabilan áll az Android 17 a lábán
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Samsung Galaxy Watch7 - kötelező kör
- Xiaomi 17 Ultra - jó az optikája
- Xiaomi 15 - kicsi telefon nagy energiával
- Oppo a Vivónak: hagyd otthon a telekonvertert!
- Apple iPhone 17e – mágnesek ereje
- Okosóra és okoskiegészítő topik
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Apple iPhone 17 Pro Max – fennsík
Új hozzászólás Aktív témák
-
trisztan94
őstag
Sziasztok!
Egy programozástechnikai kérdésem lenne:
Windows Phone 8-ra fejlesztek egy angol nyelvoktató alkalmazást. Két részre van osztva:
1. rész: írás és hallás alapján történő tanulás
2. rész: mondatok összeillesztéseA két rész szorosan kapcsolódik egymáshoz.
Az első rész működése:
Kirak a képernyőre két egyező mondatot egymás alá a program. Az egyik magyarul, a másik angolul. Felolvassa a magyart, vár 2mp-et majd felolvassa az angolt. Ezek után még ezt 4x megcsinálja, csak más mondatokkal.
Ez a része megvan.A második rész működése:
Az első részben megjelenített mondatokat kell újra összerakni. Kiírja a magyar mondatot, ennek az angol megfelelőjét kell összerakni 12 szóból, helyes sorrendben. Na most itt az az egyik fő dolog, hogy a 12 szóból 12-x random szó, az x pedig a mondatba való szavak nyilván (hogy ki lehessen rakni a mondatot).Na most ezt én próbáltam objektumorientáltan megoldani, úgyis rég dolgoztam már úgy, nem árt egy kis gyakorlás, meg hát sokkal szebb is úgy az egész.
Osztályok, felépítésük, egymáshoz való kapcsolatuk:
Először felsorolom az osztályokat:
ElsoResz
Mondat
Szo
HasznalhatoMondatok
Extraszavak
MasodikReszAz ElsoResz.cs-ben van az első rész logikája, tehát a random mondat kiválasztása a lehetséges mondatokból, annak a kiírása. Jelenleg egy sima void metódus tölti fel a mondatokat explicit módon, így:
private List<Mondat> Mondatok = new List<Mondat>();
private int idSzamlalo = 0;
private void mondatFeltoltes()
{
Mondat mondat = new Mondat(idSzamlalo, "Szeretem a fagyit.", "I like ice cream");
Mondatok.Add(mondat);
idSzamlalo++;
mondat = new Mondat(idSzamlalo, "Ő hol van?", "Where is she?");
Mondatok.Add(mondat);
idSzamlalo++;
mondat = new Mondat(idSzamlalo, "Annak tizennégy éves", "Ann is fourteen");
Mondatok.Add(mondat);
}Mondat.cs-ben van a mondatok felépítése, az így néz ki:
public class Mondat
{
public int ID;
public string magyar; //magyar mondat
public string angol; //angol mondat
public string[] angolSzavak; //mondat szavai (angol)
public string[] magyarSzavak; //mondat szavai (magyar, de most ez lényegtelen)
public Mondat(int ID, string magyar, string angol)
{
this.ID = ID;
this.magyar = magyar;
this.angol = angol;
}
public void setAngolSzavak (string[] angolSzavak)
{
this.angolSzavak = angolSzavak;
}
public string[] getAngolSzavak()
{
return angolSzavak;
}
public void setMagyarSzavak(string[] magyarSzavak)
{
this.magyarSzavak = magyarSzavak;
}
public string[] getMagyarSzavak()
{
return magyarSzavak;
}
}Amikor végigmentek a mondatok, akkor átlépünk a 2. részre. Oda úgy lépünk, hogy a kiírt mondatokat berakom egy statikus osztályba, a HasznalhatoMondatok.cs-be, ami így néz ki:
public static class HasznalhatoMondatok
{
public static List<Mondat> Mondatok = new List<Mondat>();
public static void setMondatok(List<Mondat> _Mondatok)
{
Mondatok = _Mondatok;
}
public static List<Mondat> getMondatok()
{
return Mondatok;
}
}Így rakom bele az ElsoResz.cs-ből navigálás előtt:
HasznalhatoMondatok.setMondatok(Mondatok);
Tehát beraktuk a mondatokat a HasznalhatoMondatok osztályba, átlépünk a 2. részre. A MasodikResz.cs-ben ez történik:
partial class MasodikResz : PhoneApplicationPage
{
private List<Mondat> mondatok = new List<Mondat>();
private int szavakSzama = 12;
//constructor
public MasodikResz()
{
mondatok = HasznalhatoMondatok.getMondatok();
foreach(var item in mondatok)
{
string[] mondatSzavai = item.angol.Split(' ');
}
InitializeComponent();
}
}Tehát letároljuk egy osztályon belüli listában a felhasznált mondatokat, majd utána .Split-eljük a mondatot, így szavak lesznek belőlük, amit majd a Mondat osztály angolSzavak mezőjébe rakunk majd be.
Ezeken kívül van még a Szo osztály, ami működésileg hasonló a Mondat osztályhoz:
class Szo
{
public string szo;
public bool isInMondat;
public Szo(string szo, bool isInMondat)
{
this.szo = szo;
this.isInMondat = isInMondat;
}
}És van még az ExtraSzavak osztály, ami szintén adatbázisból fog majd jönni, de most még explicit van feltöltve, de az is nagyon hasonló lesz a HasznalhatoMondatok osztályhoz, tehát statikus:
public static class ExtraSzavak
{
public static List<Szo> Szavak = new List<Szo>();
public ExtraSzavak()
{
szavakFeltoltese();
}
private void szavakFeltoltese()
{
Szo szo = new Szo("Banana", false);
Szavak.Add(szo);
szo = new Szo("House", false);
Szavak.Add(szo);
szo = new Szo("Dog", false);
Szavak.Add(szo);
szo = new Szo("Cat", false);
Szavak.Add(szo);
szo = new Szo("Apple", false);
Szavak.Add(szo);
szo = new Szo("Orange", false);
Szavak.Add(szo);
szo = new Szo("Pear", false);
Szavak.Add(szo);
szo = new Szo("Grape", false);
Szavak.Add(szo);
szo = new Szo("Boat", false);
Szavak.Add(szo);
szo = new Szo("Car", false);
Szavak.Add(szo);
}
public static void setSzavak(List<Szo> _Szavak)
{
// TODO: Complete member initialization
Szavak = _Szavak;
}
public static List<Szo> getSzavak()
{
return Szavak;
}(ez még nem komplett, vágom, hogy miket nem lehet statikus osztályba rakni, most fogom átírni)
Tehát az lenne a kérdésem, hogy nem bonyolítom-e túl, esetleg nem vétek-e egy hihetetlenül triviális hibát? A gondolatmenete jó a felépítésnek? Ti mit csinálnátok másképpen?
Előre is köszönök szépen minden segítséget és bocsánat a hosszúra sikeredett hsz.-ért

Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Linux kezdőknek
- Táncolni még nem tud, de stabilan áll az Android 17 a lábán
- Arc Raiders
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Anime filmek és sorozatok
- Hosszú premier előzetest kapott az Arknights: Endfield
- Bittorrent topik
- Villanyszerelés
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- További aktív témák...
- Intel Core Ultra 7 265KF RX9060XT minőségi PC teljes garancia
- Apple iPhone 16 Pro 128GB 94%-os akku
- Lenovo X1 Yoga gen. 6. // i7-1185g7 // 32GB // 512GB // ÚJSZERŰ!!! // ÚJ ÁRA 1.408.990.-Ft!!!!!!
- Lenovo ThinkPad W541,15.6,FHD,i7-4810MQ,32GB DDR3,256GB SSD,K1100 2GB VGA,WIN10
- Samsung Galaxy Tab S10 Ultra 5G 12/256 2028.09.03-ig garancia
- LG 27US550-W - 27" IPS / 3840x2160 4K / 60Hz 5ms / HDR10 / Forgatható / sRGB 99%
- BESZÁMÍTÁS! Akár részletfizetés 0% THM ÚJ Intel LGA 1700 processzorok 3 év garanciával 27% áfaval
- Ulefone RugKing Pad Pro strapatablet
- Lenovo X1 Nano 907 Gramm Core i7 1180G7 16Gb Ram 512Gb NVMe Boltból Garanciával Számlával
- ASUS ROG Flow Z13 2in1 i9 / RTX 3050Ti / 120Hz GAMER TABLET!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



