C# - pomoc interface

Programovacie jazyky, rady, poradňa...
Axwell
Light Expert
Light Expert
Príspevky: 50
Registrovaný: 21 mar 2007, 21:13
Kontaktovať používateľa:

C# - pomoc interface

Príspevok od používateľa Axwell »

Zdravim, zaciatocnik v C#, vypada kod blbo,nie som moc znaly objektoveho programovania. Nizsie uvedeny zdrojak, potrebujem vyriesit aby som vedel prechadzat medzi premennymi c,f,k v interfejsoch, aby taktiez t0 ktora je zadana hodnota, bolo mozne s nou pracovat v interfejsoch.
Este nizsie ak zadam t0 aby mi zobralo aj desatinne cisla, taka banalita, v cecku scanf kde som to vedel...
Ozaj ak je to fatalna chyba celeho kodu, tak mozte LOCK, neurazim sa :D

Kód: Vybrať všetko

using System;

interface IInterface
{
    void SampleMethod1();
    void SampleMethod2();
    void SampleMethod3();
}

class ImplementacnaTrieda : IInterface
{
    
    // Tu robime tzv. explicitnu implementaciu clenov rozhrania 
    void IInterface.SampleMethod1()
    {
        Console.WriteLine("Prevod na stupne Celzia");
        double c = 0;
        c = ((f - 32) * 1.8);
        Console.WriteLine(c);
    }

    void IInterface.SampleMethod2()
    {
        Console.WriteLine("Prevod na stupne Fahrenheita");
        double f = 0;
        f = ((t0 * 1.8) + 32);
        Console.WriteLine(f);
    }

    void IInterface.SampleMethod3()
    {
        Console.WriteLine("Prevod na stupne Kelvina");
        double k = 0;
        k = t0 + 273.15;
        Console.WriteLine(k);
    }

  
        static void Main()
        {
           
            //nacitanie udajov z konzoly
            Console.WriteLine("Zadajte teplotu v stupnoch celzia: ");
            double t0 = double.Parse(Console.ReadLine());
           
            //vypis vysledkov
            Console.WriteLine("Zadana teplota je: ");
            Console.WriteLine(t0);
          
            Console.WriteLine("Pre vypis konverzii stlacte ENTER");
            Console.ReadLine();

            // deklaracia instancie 
            IInterface obj = new ImplementacnaTrieda();

            // Volanie clenov
            obj.SampleMethod1();
        
            obj.SampleMethod2();
         
            obj.SampleMethod3();
     
            Console.ReadLine();
        }

        public int f { get; set; }

        public double t0 { get; set; }
}
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: C# - pomoc interface

Príspevok od používateľa pcsiete »

Neviem o čo presne ide, ale tipujem že chceš dosiahnuť aby bola už samotná manipulácia s členmi rozhrania (interfejs :roll: ) zastupujúcimi jednotlivé stupnice akciou vykonávajúcou konverziu. Teda...

Kód: Vybrať všetko

interface ITemperatureConversions {
	double Celzius { get; set; }
	double Kelvin { get; set; }
	double Fahrenheit { get; set; }
}

class TemperatureConversions : ITemperatureConversions {
	private double kelvin;
	
	public double Kelvin {
		get {
			return this.kelvin;
		}
		set {
			this.kelvin = value;
		}
	}
	public double Celzius {
		get {
			return this.kelvin - 273.15;
		}
		set {
			this.kelvin = value + 273.15;
		}
	}
	public double Fahrenheit {
		get {
			return (this.kelvin - 273.15)*1.8 + 32;
		}
		set {
			this.kelvin = (value-32)*1.8 + 273.15;
		}
	}
}
Axwell
Light Expert
Light Expert
Príspevky: 50
Registrovaný: 21 mar 2007, 21:13
Kontaktovať používateľa:

Re: C# - pomoc interface

Príspevok od používateľa Axwell »

super, este ako zavolat clenov, takto ked som len prepisal z tvojho, to nejde
a moje t0 zadana teplota v °C myslene tu ako kelvin ?

Kód: Vybrať všetko

   // deklaracia instancie 
            ITemperatureConversions obj = new TemperatureConversions();

            // Volanie clenov
            obj.Celzius();

            obj.Kelvin();

            obj.Fahrenheit();
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: C# - pomoc interface

Príspevok od používateľa pcsiete »

Ďalej už pracuješ ako s poliami triedy:

Kód: Vybrať všetko

obj.Celzius = 270; // stupnov celzia
obj.Fahrenheit += 32; //+32 stupnov fahrenheita
Console.WriteLine(obj.Kelvin); //vypise v kelvinoch
//2^8. príspevok :)
Napísať odpoveď