Nesne'den Static Çağırmak

Başlatan harunbas141, 08 Kasım 2016 - 09:54:36

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

harunbas141


using System;

namespace Fractions
{
    public class Fraction
    {
        private int numerator;
        private int denominator;

        public Fraction(int _numerator, int _denominator)
        {
            numerator = _numerator;
            denominator = _denominator;
        }

        public Fraction()
        {
            numerator = 1;
            denominator = 1;
        }

        public bool setNumerator(int numeratorVal)
        {
            numerator = numeratorVal;
            return true;
        }

        public bool setDenominator(int denominatorVal)
        {
            if (denominatorVal == 0)
            {
                return false;
            }
            else
            {
                denominator = denominatorVal;
                return true;
            }
        }

        public int getNumerator()
        {
            return numerator;
        }

        public int getDenominator()
        {
            return denominator;
        }

        public double getFractionValue()
        {
            return (numerator + 0.000) / denominator;
        }

        public Fraction addFractions(Fraction f)
        {
            int newDenominator = denominator * f.getDenominator();
            int newNumerator = (numerator * f.getDenominator()) + (f.getNumerator() * denominator);
            Fraction newFraction = new Fraction(newNumerator, newDenominator);
            return newFraction;
        }

        public static Fraction addFractions(int numerator1, int denominator1, int numerator2, int denominator2)
        {
            int newDenominator = denominator1 * denominator2;
            int newNumerator = (numerator1 * denominator2) + (numerator2 * denominator1);
            return new Fraction(newNumerator, newDenominator);
        }

        public Fraction subtractFractions(Fraction f)
        {
            int newDenominator = denominator * f.getDenominator();
            int newNumerator = (numerator * f.getDenominator()) - (f.getNumerator() * denominator);
            Fraction newFraction = new Fraction(newNumerator, newDenominator);
            return newFraction;
        }

        public static Fraction SubtractFractions(int numerator1, int denominator1, int numerator2, int denominator2)
        {
            int newDenominator = denominator1 * denominator2;
            int newNumerator = (numerator1 * denominator2) - (numerator2 * denominator1);
            return new Fraction(newNumerator, newDenominator);
        }

        public void negate()
        {
            numerator *= -1;
        }

        public static void negate(Fraction f)
        {
            f.setNumerator(-1 * f.getNumerator());
        }

        public void inverse()
        {
            int oldNumerator = numerator;
            numerator = denominator;
            denominator = oldNumerator;
        }

        public static void inverse(Fraction f)
        {
            int oldNumerator = f.getNumerator();
            f.setNumerator(f.getDenominator());
            f.setDenominator(oldNumerator);
        }
    }
}


yukarıda ki kod nesne olarak oluşturdum.




using System;
using Fractions;

namespace Uygulama_2
{
    class Program
    {
        static void Main(string[] args)
        {
            Fraction _n3 = Fraction.addFractions(4, 5, 6, 7);
            Fraction _n1 = new Fraction(4, 5);
            Console.WriteLine(_n1.getFractionValue());
            Fraction _n2 = new Fraction(3, 9);
            Console.WriteLine(_n2.getFractionValue());

            Fraction a = _n1.addFractions(_n2);
            Fraction b = _n1.subtractFractions(_n2);

            Console.WriteLine(Fraction.addFractions(4,5,3,9));  // STATIC OLARAK CAĞIRMAYA CALISTIĞIM YERLER


            Console.WriteLine("Çarpma: ");
            Console.WriteLine(_n1.getFractionValue() * _n2.getFractionValue());
            Console.WriteLine("Bölme: ");
            Console.WriteLine(_n1.getFractionValue() / _n2.getFractionValue());
            Console.WriteLine("Topla: ");
            Console.WriteLine(_n1.getFractionValue() + _n2.getFractionValue());
            Console.WriteLine("Çıkarma: ");
            Console.WriteLine(_n1.getFractionValue() - _n2.getFractionValue());
            Console.WriteLine("Add Fraction: ");
            Console.WriteLine(_n3.getNumerator() + "/" + _n3.getDenominator());
            Console.WriteLine("Subtract Fraction: ");
            Console.WriteLine();
            Console.ReadKey();
        }
    }
}




ikinci kısımda main fonksiyonu sorum şu arkadaşlar static olanı nasıl çekicem yapıyorum ama olmuyor.STATIC olan fonksiyona direk ulaşılamıyor mu?illa static olanı nesne yapıp öyle mi çağırabiliyorum?

Amenofis

Diğer satırlarda bir sorun göremedim ama şu;
Console.WriteLine(Fraction.addFractions(4,5,3,9));  // STATIC OLARAK CAĞIRMAYA CALISTIĞIM YERLER

hatalı gibi. C# bilmediğim için emin olamıyorum ama WriteLine fonksiyonu obje referansı ile ne yapıyor acaba? Çünkü addFractions metodu obje döndürüyor?

harunbas141

static olmayan nesneden static çağırmaya çalıştım ama olmuyor. onu yapmaya çalıştım orada.