Morjens taasen !
Taas olen tehnyt noita Ghodrad Godhadampour:n tehtäviä ja törmäsin tuon namespacen kanssa pieniin ongelmiin tätä tehdessä, tosin tämä luokka toimii ja myös testi pääohjelmasta annetun tehtävän mukaisesti.
Visual Studio luo C# consoli sovellusta luotaessa "namespace firmaluokka" ja
class program <--jonka olen vaihtanut firma -nimiseksi luokaksi.
firmaluokka nimihän tulee kun luon tuon projektin.
Onko tämä nyt samalla tavalla kuin javassa, eli tuo namespace on nimiavaruus
(javasa package) joka otetaan mukaan muihin luokkiin kun halutaan kutsua jotakin toista luokkaa ?
Eli olen saanut nämä ohjelmatehtävät ratkottua niinkuin alla olevassa koodissa on, mutta uskon etten tee tätä nyt ihan oikein noiden nimiavaruuksien ja luokkien suhteen.
Kuinka minun olisi pitänyt tuo namespace ja luokka nimetä ?
(luultavasti tuo voitto -muuttuja olisi voinut olla vain lokaali-muuttuja)
/* * Ohjelma, jossa määrittelet Firma-luokan. Luokkaan pitäisi kuulua seuraavat kentät. * firman nimi, osoite, puhelin sekä tulot ja menot. * Kirjoita luokalle oletusmuodostin (parametriton), muodostin, joka sisältää kaikki parametrit sekä * kopiointimuodostin, jolla olio voidaan kopioida. * Määrittele luokalle myös metodi, joka laskee tulojen ja menojen perusteella firman voiton. * * Metodin pitää laskea * * voitto%= [(tulot-menot)/menot * 100] * ja tulostaa sen perusteella näytölle viesti, joka kertoo, kuinka hyvin firmalla menee. * * kehnosti jos voitto on alle 100% suurempi kuin menot * tyydyttävästi jos voitto on vähintään 200% suurempi kuin menot * hyvin jos voitto on vähintään 300% suurempi kuin menot. * * Luo pääohjelmassa olioita Firma-luokasta ja kopioi yksi olio kopiointimuodostimella. * Luotuasi olioita kutsu niiden metodi, joka kertoo firman tilanteesta. **/ using System; using System.Collections.Generic; using System.Linq; using System.Text; class Firma { public string firmanNimi; public string osoite; public string puhelin; public float menot; public float tulot; public float voitto; /* Muodostin määritellään luokan kaikilla attribuuteilla */ public Firma(string firmanNimi, string osoite, string puhelin, float menot, float tulot) { this.firmanNimi = firmanNimi; this.osoite = osoite; this.puhelin = puhelin; this.menot = menot; this.tulot = tulot; this.voitto = 000000.00f; } /* määritellään oletusmuodostin (parametriton) */ public Firma() { firmanNimi = "Ei tiedossa! "; osoite = "Ei tiedossa! "; puhelin = "Ei tiedossa! "; menot = 000000.00f; tulot = 000000.00f; voitto = 000000.00f; } /* Määritellään muodostin joka saa parametrina toisen Firma-olion */ public Firma(Firma firma) { /* firma-olion attribuuttien arvot kopioidaan kutsuvan olion attribuutteihin. */ this.firmanNimi = firma.firmanNimi; this.osoite = firma.osoite; this.puhelin = firma.puhelin; this.menot = firma.menot; this.tulot = firma.tulot; this.voitto = firma.voitto; } /* Luodaan laskentatoimet tulostaVoitto()-metodille. */ public void laskeVoitto() { voitto = (tulot - menot) / menot * 100; // (5000 - 500) = 4500 / 500 * 100 = 900%, eli voittoprosentti on 900% suurempi kuin menot (9 kertaa suurempi) if (voitto < 100) Console.WriteLine("Firman " + this.firmanNimi + " voittoprosentti on " + voitto + " joka on alle 100% suurempi kuin menot"); //Console.WriteLine("-------------------------------------"); { if (voitto == 200 && voitto < 300 ) Console.WriteLine("Firman " + this.firmanNimi + " voittoprosentti on " + voitto + " joka on vähintään 200% tai alle 300% "); // Console.WriteLine("-------------------------------------"); { if (voitto > 300) Console.WriteLine("Firman " + this.firmanNimi + " voittoprosentti on " + voitto + " joka on yli 3 kertainen menoihin verrattuna "); // Console.WriteLine("-------------------------------------"); } } } } class firmaluokka { public static void Main(string[] args) { Firma firma1 = new Firma("Riistaputiikki", "Riistatie 444", "040-123456", 500.00f, 5000.00f); Console.WriteLine("------------------------------------------------------------------------------"); firma1.laskeVoitto(); Firma firma2 = new Firma("Erätukku", " Jänistie 7", "0400-121234", 400.00f, 400.00f); Console.WriteLine("------------------------------------------------------------------------------"); firma2.laskeVoitto(); Console.WriteLine("\n------------------------------------------------------------------------------"); Firma firma3 = new Firma("Majavalahtaus", " Majavapolku 47", "09-123214", 100.00f, 300.00f); firma3.laskeVoitto(); Console.WriteLine("\n------------------------------------------------------------------------------"); } } /*Alla olevan namespace-nimen olen poistanut ohjelmakoodista, joka ei välttämättä ole oikein*/ //namespace firmaluokka //static void Main(string[] args)
Mod. lisäsi kooditagit ja poisti pari pitkää ***-riviä.
Morjens Zam!
Tässä hieman nimitilajutskista
//Nimitila on tuotu referensseihin GAC:sta (Global Assembly Gache) using System; //Nimitila on tuotu projektin sisältä (TeststClass.cs) using NameSpaceTest2; namespace NameSpaceTest { class Program { public static void Main(string[] args) { //***kun luot TeststClass luokasta uuden ilmentymän niin... TeststClass testclass = new TeststClass(); Console.WriteLine(testclass.teststr); Console.Write("Press any key to continue . . . " + Environment.NewLine); Console.ReadKey(true); //annetaan testclass-luokan julkiselle //merkkijonomuuttujalle uusi arvo... testclass.teststr = "Mitäs siellä tapahtuu?"; Console.WriteLine(testclass.teststr); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }
using System; namespace NameSpaceTest2 public class TeststClass { public string teststr; //tässä luodaan TeststClass-luokan uusi ilmentymä public TeststClass() { //***tässä luokan julkinen merkkijonomuuttuja saa arvon this.teststr = "Morjens Maailma!"; } } }
Kiitoksia Nea,
Huomasin juuri etttä seuraavat mainitsemani kirjatehtävät käsittelevät namespacea, joten hyvään saumaan tulee kaikki neuvot. Kyllä tässä yrittää aina viimeiseen asti pärjätä omilla avuilla, koska ei tätä opi kuin tekemällä.
Opinnot minulla on ohi javan osalta jota kävin 5 kurssia javaa ja tämä on sitten kertausta hieman eri ohjelmointikielellä.5 kurssia javaa ei todellakaan meikäläiselle riitä,mutta kiinnostus ohjelmointia kohtaan ei ole yhtään hiipunut.
Aihe on jo aika vanha, joten et voi enää vastata siihen.