Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
spreiii
HV kasutaja
liitunud: 27.12.2008
|
12.03.2012 18:29:19
C# classi küsimus |
|
|
Kõigepealt üritan selgeks teha, mida ma saavutada üritan:
Funktsioonis Main genereeritakse nelja linna jaoks kolme kuu kohta iga päeva keskmine õhutemperatuur.
Linnad hoitakse enum'is nimega Cities.
c#:
|
public enum Cities { Johvi, Narva, Tartu, Tallinn };
|
Täpsemalt teen seda nii:
c#:
|
// Genereerime ilma andmed iga linna jaoks for (int i = 0; i < sizeof(Cities ); i++ ) { // Genereerime andmed 3 kuu jaoks (jaanuar, veebruar, märts) 2012 for (int j = 1; j <= 3; j++) { // Genereerime andmed iga päeva jaoks kuus for (int m = 1; m <= DateTime.DaysInMonth(2012, j); m++) { string m_temp = ""; if(m < 10) m_temp = "0"; Random random = new Random (); string kuupaev = "0"+j+"/"+m_temp + m+"/2012"; new Weather (Enum. GetName(typeof(Cities ), i ), kuupaev, random. Next(-16, 2)); } } Console. WriteLine("OK: Andmed genereeritud linna {0} jaoks!", Enum. GetName(typeof(Cities ), i )); }
|
Nagu koodist näha, luuakse uus "Weather", mille sisu on:
c#:
|
class Weather { public Weather(string linn, string kp, double kesktemp) { this.linn = linn; this.kp = kp; this.kesktemp = kesktemp; } }
|
Andmete genereerimine iseenesest töötab. Küsimus oleks selline, et millisel viisil saaksin ma Weather classi sees iga tekitatud objekti läbi kammida?
Kas saab class'i sees luua uue array, mis sisaldab neid objekte?
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
12.03.2012 21:27:52
|
|
|
Sul on tarvis kusagil hoida need tekitatud muutujad. Hetkel sa teed lihtsalt uue Weather objekti (new Weather(Enum...)) ja ta lihtsalt "hõljub õhus". Sa võiksid näiteks endale teha sellise klassi:
public class WeatherData {
public List<Weather> Weathers {get; set;}
}
|
Siis lükid listi iga kord kui objekti teed:
var weatherData = new WeatherData();
<loop siin>
...
weatherData.Weathers.Add(new Weather(Enum.GetName(typeof(Cities), i), kuupaev, random.Next(-16, 2));
|
Ja siis saad läbi käia näiteks:
foreach(var data in weatherData.Weathers) {
... do something with data
}
|
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
12.03.2012 22:47:28
|
|
|
Suured tänud,
Üks probleem siiski on - rida
c#:
|
weatherData. Weathers. Add(new Weather ("Test", "12/03/2012", 3));
|
annab veateate
Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object. |
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
12.03.2012 23:18:53
|
|
|
Kusagil on miski muutuja loomata. Ise pakun, et kas weatherData või tolle Weathers list.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
13.03.2012 00:22:14
|
|
|
Olen suurem osa koodist välja kommenteerinud, et testida:
Main()
c#:
|
static void Main(string[] args) { var weatherData = new WeatherData (); weatherData. Weathers. Add(new Weather ("Test")); }
|
WeatherData
c#:
|
public class WeatherData { public List<Weather> Weathers { get; set; } }
|
Weather
c#:
|
public class Weather { // Linn public string linn { get; set; } // Konstruktor ilma parameetriteta public Weather() { linn = "Puudub"; } // Konstruktor parameetritega public Weather(string linn) { this.linn = linn; } }
|
Ilmselgelt tegin ma kuskil vea, kuid ei suuda seda oma C# kogemuste põhjal tuvastada
EDIT:
Selline versioon töötab, kuid seda ainult Main-is. Kui samu andmeid Weather class'is tahan kasutada, nullitakse genereeritud andmed, kuna pean looma uue weatherData.
c#:
|
public class WeatherData { private List<Weather> weathers = new List<Weather> (); public List<Weather> Weathers { get { return weathers; } set { weathers = value; } } }
|
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
13.03.2012 08:02:00
|
|
|
Constructor võiks ka sellisel klassil olemas olla.
A la
class WeatherData
{
public WeatherData()
{
Weathers = new List<Weather>();
}
public List<Weather> Weathers { get; set; }
}
|
http://pastebin.com/LYR9eysT
On kood millega ma just praegu testisin.
Ning samu andmeid saad igal pool kasutada. Tarvis on ainult muutujat kuhu sa kõik need andmed topid kas globalina või annad referentsina ette teisele funktsioonile.
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
13.03.2012 12:10:52
|
|
|
Õhtupoolikul proovin ära ning annan teada kuidas õnnestus.
E: Sain varem ära proovitud.
Antud kood töötab, kuid probleem on selline, et mul on vaja andmetega töötamine realiseerida klassis Weather. Ehk siis näiteks otsida keskmine temperatuur kuu lõikes jne (ühesõnaga vaja kasutada foreach loop'i klassi Weather sees). Siis on ju vaja luua uuesti var _weatherData = new WeatherData(); ?
Ilma selleta tuleb NullReferenceException jällegi. Samas, kui teha nii nagu ma just mainisin (luua see uuesti), siis on vastav List tühi.
Siinkohal küsiks, et kas on üldse võimalik Weather klassi sees andmetega töötada või seda ei saa mingil juhul teha?
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
Desmond5
HV kasutaja
liitunud: 14.09.2002
|
13.03.2012 15:15:30
|
|
|
Hmmh, väga väga raske on aru saada koodist, kui näidatakse ainult juppe.
Mõned märkused:
1. Random klassi initialiseerimine peab olema itereerivast koodist väljaspool, vastasel korral hakkavad tulemused kattuma.
2. Sizeof on unsafe keyword, ära kasuta seda juhul kui sa tõesti tead mis sa teed. Array või listi elementide hulga leidmiseks kasuta .Count() või .Length, enumeraatori elementide konverteerimiseks massiiviks kasuta alltoodud meetodit.
3. Kui sa juba kirjutad koodi eesti keeles, siis kasuta täpitähti (.NET ja Java toetavad enamus UTF8 poolt toetatud märki, kasvõi hieroglüüfe). See on ürgaegne tava paljudel jäänud C/C++/Pascal jms maailmast et täpitähti ei saa kasutada. Tänapäeval (st viimased 10 aastat) saab ja see on standardiks.
4. Kasuta õige asja jaoks õiget andmetüüpi. Kuupäev on DateTime mitte string. Kui sul on linn juba Enum, siis ära konverdi seda stringiks varasemalt.
5. Ole tähelepanelik kuhu sa ";" (semikooloni) paned. Nt public enum City { Jõhvi, Narva, Tartu, Tallinn }; <- siin ei peaks semikoolonit olema.
Semikoolon ei käi (erinevalt C/C++) C#/Java keeles klasside/structide/enumite definitsioonide järel.
Proovi näiteks midagi sellist (töötav kood):
using System;
using System.Collections.Generic;
using System.Linq;
namespace Weather
{
public enum City { Jõhvi, Narva, Tartu, Tallinn }
// Weather klassi üks kirje kirjeldab ühe linna temperatuuri teatud kuupäeval.
// Siin ei saa ega TOHIKS teisi Weather kirjeid (Weathereid) näha.
public class Weather
{
public City Linn { get; set; }
public DateTime Kuupäev { get; set; }
public double Kesktemp { get; set; }
public Weather(City linn, DateTime kp, double kesktemp)
{
Linn = linn;
Kuupäev = kp;
Kesktemp = kesktemp;
}
}
class Program
{
static void Main(string[] args)
{
List<Weather> weathers = GenereeriAndmed();
// Nüüd siinkohas saaksid sa näiteks keskmist temperatuuri leida, kuna sul on List<Weather> olemas.
foreach (var weather in weathers)
{
Console.Out.WriteLine(weather.Linn + " - " + weather.Kuupäev.ToString("dd.MM.yyyy") +
" - " + weather.Kesktemp + " C");
}
Console.ReadLine();
}
public static List<Weather> GenereeriAndmed()
{
List<Weather> weathers = new List<Weather>();
// Random peab üheselt initialiseeritud olema üle kõikide iteratsioonide kus sa seda välja kutsud.
Random random = new Random();
// Leia kõik linnad enum seest. Tegelikult oleks ilus kui linnad oleks eraldi klass ja siis sa hoiaks neid üldse Listis.
// Ehk siis class Linn...ja hiljem List<Linn> jne. Enum ei tundu siinkohas hea praktika.
IEnumerable<City> linnad = Enum.GetValues(typeof(City)).Cast<City>();
DateTime algus = new DateTime(2012,1,1);
DateTime lõpp = new DateTime(2012,4,1).AddDays(-1);
// Itereerime üle kõikide linnade
foreach (var city in linnad)
{
// Itereerime üle kõikide kuupäevade vahemikus algus kuni lõpp (seda ei pea nii tegema, see mis sa enne tegid oli ka OK tegelikult).
for(DateTime date = algus; date <= lõpp; date = date.AddDays(1))
{
// Lisa uus Weather kirje.
Weather weather = new Weather(city, date, random.Next(-16, 2));
weathers.Add(weather);
}
}
// Nüüd on linnade andmed genereeritud ning tagastame need tervikuna, et neid saaks hiljem kasutada.
return weathers;
}
}
}
|
Aru ei saa ma sellest, mida sa mõtled selle all, et sul on vaja andmetega töötada klassis Weather. Ülaltoodud (ja minupoolt alltoodud) näites on võimalik Weather klassis töötada ainult ühe ilma kirjega, mitte kõikide ilmade andmetega. Kui sa tahad keskmist temperatuuri leida üle kõikide Weatherite vms, siis sa pead seda tegema (minu koodi näite põhjal) Weather massiiviga (List<Weather>). Ideaalne koht selleks on Main() protseduuris kohe peale GenereeriAndmed() väljakutsumist ja List<Weather> kättesaamist..
Kui sul muidugi on tingimus, et sa kohe kindlasti *pead* Weather klassis andmeid töötlema, siis sul tuleb luua public static globaalne muutuja (halb praktika) Program klassi sisse (see kus main on) ja seal siis GenereeriAndmed tulemusi hoida. Siis sa saad neile hiljem Weather klassi seest ligi. Aga see on tõesti tõesti väga halb praktika. Ma väga loodan, et sulle seda koolis ei õpetatud nii tegema.
Muidugi jah, keegi ei keela sul teha ka midagi sellist:
public class Weather
{
public City Linn { get; set; }
public DateTime Kuupäev { get; set; }
public double Kesktemp { get; set; }
public Weather(City linn, DateTime kp, double kesktemp)
{
Linn = linn;
Kuupäev = kp;
Kesktemp = kesktemp;
}
public void TöötleAndmeid(List<Weather> andmed)
{
//Siinkohas saad nüüd kõiki andmeid töödelda..kõikidele kirjetele saad "andmed" kaudu ligi,
// ja käesolevale saad lokaalselt ligi. Aga miks sa seda tahaksid ?
}
}
|
Ja siis Main funktsioonis:
static void Main(string[] args)
{
List<Weather> weathers = GenereeriAndmed();
foreach (var weather in weathers)
{
weather.TöötleAndmeid(weathers);
}
Console.ReadLine();
}
|
Aga iseasi mida see annab sulle..
Parem kirjelda oma probleemi paremini, mida sa üritad saavutada.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
13.03.2012 16:29:02
|
|
|
Proovin seda töötavat koodi ka kohe, aga.. kui ausalt öelda, siis tegelikult probleem "koolis õpetatu" põhjal alguse saigi.
Mul olid kõik vajalikud funktsioonid (andmetega töötamine) realiseeritud juba Main'is (ülaltoodud koodis tõin ainult probleemse osa, mis tekkis pärast õppejõuga rääkimist) ja programm oli täiesti funktsionaalne.
Rääkides Random'ist, siis vea avastasin ka vahepeal, et ta ei tööta ja tõstsin ta loop-ist välja.
Väidetavalt oleks ma pidanud andmetega töötamise realiseerima Weather class'is(küsisin oma 2 korda üle, et kas ikka seal, mitte Main-is), mis tundus mulle juba esialgu imelik, aga noh.. see õppeaasta sai C#-ga otseselt algust tehtud ja ei olnud päris kindel ka, et mida saab teha seal ja mida mitte.
Kokkuvõtteks võib siis öelda nii palju, et... kurb, ülimalt kurb kui selliseid õpetajaid tänapäeval leidub, kes ei saa ise ka aru, mida tohib, mida ei tohi ja mis on halb praktika.
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
13.03.2012 18:52:15
|
|
|
Weather klass on sinu koodi põhjal otsustades ainult tavaline struktuur. Sinna võib ju mingit loogikat kirjutada, aga see töötab ainult selle klassi enda muutujatega, privaat või mitte (v.a. juhul kui sa referentsi passid). Midagi muud sa sinna panna ei saa. Extension meetoditega saad muidugi igasugust nalja teha, aga tuu om natuke advancim topic
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
13.03.2012 18:57:25
|
|
|
Ma pigem ütleks, et hetkel on siit üks klass puudu mis nonde weather objektidega möllaks. Tehniliselt saab seda ka main'is teha aga hello world'ist vähe suurema asja puhul pole see kõige ilusam lahendus.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
13.03.2012 19:09:45
|
|
|
Nii, et see siiski on teostatav? Huvitav on asja juures see, et see ülesanne on pärit tegelikult "klassidega tutvumise" teemast. Ma väga loodan, et keegi adminitest/modedest ei arva, et tegu on "tehke mu kodutöö minu eest ära" teemaga. Kaugel sellest, ma üritan vaid leida lahendust sellele, kuidas oleks võimalik List-i genereerida andmed ning hiljem neid just eelpool toodud Weather klassis kasutada.
Sama lahendus puhtalt Main'is istudes töötab ideaalselt. Kui aga paluti meetodid Weather klassi tõsta, tekkiski teema põhiprobleem: kuidas oleks võimalik näiteks Main'is andmed genereerida ning hiljem just nimelt Weather klassis samu andmeid kasutada.
Reaalselt oma taset arvestades ei tohiks siin erilisi "advanced meetodeid", mida teavad inimesed, kes selle ala peal töötavad, olla.
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
13.03.2012 19:15:30
|
|
|
Tee klassid:
weather mis hoiab üht konkreetset ilmainfot (asukoht, timestamp, temperatuur)
weatherAnalysis vmt mis sisaldab listi weather objektidest, funktsiooni weatherite lisamiseks sinna listi ning funktsiooni tolle listi töötlemiseks
Mainis siis tekitad tolle weatheranalysis klassi, laod oma ilmainfo sinna sisse ning kutsud töötlusfunktsiooni välja.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
13.03.2012 20:34:44
|
|
|
Niisiis, võttes arvesse siin teemas tehtud soovitusi ja erinevaid koodipostitusi, sain hakkama millegi sellisega:
c#:
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Testing { /// <summary> /// Linnad /// </summary> public enum City { Jõhvi, Narva, Tartu, Tallinn } public class Weather { // Andmed public City Linn { get; set; } public DateTime Kuupäev { get; set; } public int Kesktemp { get; set; } public static List<Weather> Weathers = new List<Weather> (); /// <summary> /// Ilma andmete lisamine /// </summary> /// <param name="linn">Linn</param> /// <param name="kuupäev">Kuupäev</param> /// <param name="kesktemp">Päeva keskmine temperatuur</param> public static void AddWeatherInfo(City linn, DateTime kuupäev, int kesktemp) { Weather. Weathers. Add(new Weather (linn, kuupäev, kesktemp )); } // Konstruktor public Weather(City linn, DateTime kuupäev, int kesktemp) { Linn = linn; Kuupäev = kuupäev; Kesktemp = kesktemp; } public override string ToString() { return String.Format("Linn: {0}\nKuupäev: {1}\nTemperatuur: {2}\n", Linn, String.Format("{0:MM'/'dd'/'yyyy}", Kuupäev), Kesktemp); } public static void TananeIlm(string linn) { if (Enum. IsDefined(typeof(City ), linn )) { foreach (var data in Weathers) { if (data. Linn == (City )Enum. Parse(typeof(City ), linn, true) && data. Kuupäev == DateTime. Today) Console.WriteLine(data.ToString()); } } else Console.WriteLine("Sellist linna ei eksisteeri!"); } } class Program { public static void Main() { // Suvalise numbri jaoks Random random = new Random (); IEnumerable<City> linnad = Enum. GetValues(typeof(City )). Cast<City> (); DateTime algus = new DateTime (2012, 1, 1); DateTime lõpp = new DateTime (2012, 4, 1). AddDays(-1); foreach(var city in linnad) { for (DateTime date = algus; date <= lõpp; date = date.AddDays(1)) Weather.AddWeatherInfo(city, date, random.Next(-16, 3)); Console.WriteLine("OK: Andmed genereeritud linna {0} jaoks!", city); } // Test - näita tänane keskmine temperatuur Weather.TananeIlm("Jõhvi"); Console.ReadKey(); } } }
|
Sellisel viisil töötab ta nii nagu ideekohaselt vaja oli. Oskab nüüd keegi täiesti huvi pärast kommenteerida kui halva praktikaga siinkohal tegu on?
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
13.03.2012 21:36:32
|
|
|
Kõik staatilised meetodid ja muutjad seal weather klassis absoluuselt ei istu. Kõik peaks olema non-staticutena eraldi klassis. Praegune kood visataks üsna kiirelt igast reaalsest projektist välja.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
14.03.2012 06:57:13
|
|
|
Oot oot ... miks me läksime ilusast koodist kuhugi spagetti kus kõik segi on?
Okei, sul on Weather klass kus on Linn, Kuupäev ja Kesktemp. Aga miks sul samas klassis lisaks ka mingi List on? Pigem peaks asi välja nägema selline:
Weather klass kus on linn, kuupäev ja temp. ToString override võib ka sinna vabalt jääda.
WeatherCollection kus on kollektsioon weatheritest ning manipulatsioonifunktsioonid. Seal peaks siis olema "TänaneIlm".
Ja kui norima hakata siis peaks WeatherCollection olema AINULT kollektsioon Weather objektidest mis oleks enamvähem nagu "repository". Heaks tavaks on hoida igasugused repositoryd ja repositoryloogika eraldi, näiteks Extension meetoditena.
Extension method võiks välja näha selline:
public static class WeatherExtensions {
public static IEnumerable<Weather> CityIs(this IEnumerable<Weather> collection, string city) {
List<Weather> result = new List<Weather>();
foreach(var item in collection) {
if(item.Linn == (City)Enum.Parse(typeof(City), city, true))
result.Add(item);
}
return result;
}
}
|
(Soovitan soojalt tutvuda artikliga http://msdn.microsoft.com/en-us/library/bb383977.aspx muuseas)
Sama teed ka kuupäevaga. Siis saad teha nii:
foreach(var item in weathercollection.Weathers.CityIs("Tartu").DateIs(DateTime.Now)) {
Console.WriteLine(item.ToString());
}
|
ps: ei anna pead et 100% töötab :p poole tunni pärast jõuan tööle siis saan kontrollida, seal on mingi test olemas.
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
14.03.2012 08:47:30
|
|
|
Nagu lubatud: http://pastebin.com/8aMqAJPX
Selline asi töötab laitmatult. Viskasin sinna extension meetodid nii LINQi põhjal kui ka foreachi ja yield returni põhjal. Yield return siis tagastab vasted kui järgmist elementi küsitakse, mitte kogu kollektsiooni korraga. Kui tarvis ainult teatud vaste leida (nt esimene), on natuke ressursisäästlikum.
Extension meetodid on staatilised, niiet et mitte eksitada, tekitasin WeatherManipulator klassi. Selle Run meetod käivitatakse mainist. Ehk oli kasu
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
14.03.2012 10:33:06
|
|
|
Ei vaidle üldse vastu, et selline kood tunduvalt ilusam on, tõesti on. Probleemiks siinkohal oligi just see, et andmetega töötamine (erinevad meetodid) tuli õppejõu sõnul luua just nimelt Weather klassis. Ei Main-is, ei Weatherx klassis, vaid just Weather klassis - ja seda miks? Ma tõsiselt ei kujuta ette.
Kindluse mõttes küsisin ma vähemalt 2 korda üle, et kas just Weather klassis, mitte kuskil mujal.
Loengud ka muidugi eriti kiita pole..
Kasu oli ilmselgelt - ei jää vähemalt arusaama, et kõik peabki üks suur *spagett* välja nägema
Suur tänu igal juhul, et viitsisid vaeva näha sellise asjaga
viimati muutis spreiii 14.03.2012 10:44:05, muudetud 2 korda |
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
14.03.2012 10:36:42
|
|
|
Tbh saadaks ma tolle õppejõu seenele kui ta normaalselt vastavalt sisule klassidesse jagatud koodi ei taha saada. Kui ta vastu virisema hakkab otsi mõni praktika läbiviija või teine progemise õppejõud ning lase tal asi üle vaadata. Igal juhul ei tasu niisama jätta seda, kui äärmiselt valesid töövõtteid õpetatakse.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
14.03.2012 12:10:14
|
|
|
Nõustun eelkõneleja seisukohaga. Ma räägiks lisaks veel kellegagi, kes istub natuke kõrgemal positsioonil kui nimet õppejõud, vähemalt siis kui kõik mida sa siiani maininud oled 100% tõsi on. Ma ei kujuta ette ka miks keegi selliseid idiootsusi õpetama peaks... Ja kui loengud ka kiita pole, miks sa istud seal ja kuulad lollusi
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
14.03.2012 13:34:56
|
|
|
madedog kirjutas: |
Nõustun eelkõneleja seisukohaga. Ma räägiks lisaks veel kellegagi, kes istub natuke kõrgemal positsioonil kui nimet õppejõud, vähemalt siis kui kõik mida sa siiani maininud oled 100% tõsi on. Ma ei kujuta ette ka miks keegi selliseid idiootsusi õpetama peaks... Ja kui loengud ka kiita pole, miks sa istud seal ja kuulad lollusi  |
Noh.. eelkõige istun ma seal sellepärast, et minu grupis on alles jäänud 2 inimest(k.a. mina) 14-st
Umbes pooled langesid esimesel poolaastal välja ja ülejäänud pooled kas vahetasid eriala või läksid sisekaitse akadeemiasse
Nali-naljaks, aga kokkuvõttes on vaja selles aines ka projekt teha, mida tuleb hiljem kaitsta. Programmeerimine mulle meeldib ja ma võtan asjad üsna kiiresti omaks, aga selline praktika ei tee kohe kindlasti head.
Kas ma peaks hindamisele saatma versiooni, mis ma ise kokku klopsisin (see, mida reaalses elus iialgi kasutusele ei võetaks ), või kasutaja madedog nn. "õige" versiooni ja siis vaatama mis mulle öeldakse?
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
Ho Ho
HV Guru

liitunud: 16.02.2002
|
14.03.2012 13:44:06
|
|
|
Peaksid ise kirjutama miskit analoogset madedog'i variandile, otse copy-paste kohe kindlasti ei sobiks.
Kui õppejõule ei sobi too variant siis hakkad kõrgema võimu kaudu uurima mis värk on.
Hetkel ei saa välistada ka sellist varianti, et õppejõud lihtsalt eeldas et rahvas liiga loll et asjaliku lahendusega välja tulla ning laskiski neil mingi ülitriviaalse asjaga välja tulla. Oleks ta hakanud rääkima korrektsest klassihierarhiast ning ülesannetele vastavalt objektide tekitamisest oleks see ülesandest aru saamise mõne jaoks veelgi keerukamaks teinud. Ehk siis ma väga ei imestaks kui ta ka korrektse lahenduse vastu võtab ning ehk mõne kiidusõnagi ütleb.
_________________ Teach a man to reason and he'll think for a lifetime
Common sense - so rare that it's a damn superpower
Vaadates paljude inimeste sõnavõtte siin ja mujal jääb üle ainult klassikuid tsiteerida - "I weep for humanity" |
|
Kommentaarid: 106 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
86 |
|
tagasi üles |
|
 |
neros
HV Guru

liitunud: 26.11.2003
|
14.03.2012 13:46:53
|
|
|
Aha... ma saan aru et see sama asi mis sa siia postitasid on su bakatöö? "Õige" versioon on tegelikult selleks et sulle natuke loogilisem ja laiemalt kasutatav tee kätte juhatada pigem, mitte selleks, et copy-paste teha. Aga eks sa tee mida heaks arvad Mingit copyrighti kusagile pandud ei ole ja kui sulle sellest jama ei teki, lase käia.
E: Ka see mis Ho Ho ütles, on võimalik. Tahtis teada, kas lähed ise otsima (või plagiatsiooni tegema ) või lasedki ringi nagu lammas ise mõtlemata
_________________ GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt. |
|
Kommentaarid: 48 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
40 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
14.03.2012 13:53:21
|
|
|
madedog kirjutas: |
Aha... ma saan aru et see sama asi mis sa siia postitasid on su bakatöö? "Õige" versioon on tegelikult selleks et sulle natuke loogilisem ja laiemalt kasutatav tee kätte juhatada pigem, mitte selleks, et copy-paste teha. Aga eks sa tee mida heaks arvad Mingit copyrighti kusagile pandud ei ole ja kui sulle sellest jama ei teki, lase käia. |
Ei tegu ei ole lõputööga vaid ühe pisikese praktilise ülesandega.
Copy-paste ma ei saaks ka teha kui väga tahaksin - ülesande funktsioone ma meelega ei kirjutanud siia, kuna üritasin keskenduda ühele konkreetsele probleemile, mitte ülesande lahendamisele.
E: Tegelikult huvitaks ka selline küsimus, et kas kuskil Internetis leidub head eesti keelset materjali C# jaoks? Hetkel olen huvi pärast vaatanud lynda.com'i videoloenguid C# kohta.
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
Desmond5
HV kasutaja
liitunud: 14.09.2002
|
19.03.2012 12:01:51
|
|
|
Eestikeelseid materjale veebis eriti ei ole. TTÜs ja ITKs on päris palju aineid C# keeles aga materjale veebis väga kohanud ei ole..
Ühtteist leiab siit, aga see käib rohkem veebinduse kohta .NET maailmas (aga annab ka keelest mingi ülevaate):
http://www.eneta.ee/oppimine/veebistuudium/Lehed/veebiarendus.aspx
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
|