2016-03-27 23 views
0

Bir sınıfa 3 değişken bildirmem ve bu değişkenleri diğer değerlere atamak için bir işlev oluşturmam gerekiyor ve uzaklığı hesaplamak için başka bir işlev daha oluşturun. yeni değerler ulaşılamaz, ve benim Değişti (X/Y/Z) Ben OOP okuyan başladım, aynı zamanda hep sıfırBir işlevdeki bir değişkenin değerini değiştirme ve kepçe dışından kullanma

class Point3D 
{ 
    public double x, y, z, ChangedX = 0, ChangedY = 0, ChangedZ = 0; 

    public void MoveTo(double NewX, double NewY, double NewZ) 
    { 

     x = NewX; 
     NewX = ChangedX; 
     y = NewY; 
     NewY = ChangedY; 
     z = NewZ; 
     NewZ = ChangedZ; 

    } 

    public double DistanceTo() 
    { 
     double DeltaX = Math.Pow((ChangedX - x), 2); 
     double DeltaY = Math.Pow((ChangedY - y), 2); 
     double DeltaZ = Math.Pow((ChangedZ - z), 2); 

     return Math.Sqrt(DeltaX + DeltaY + DeltaZ); 

    } 

değildir bir süre önce o may tavsiye kurslardan herhangi birine kaynaklar var ise bana yardım et?

+0

Gönderilen kodunuzda, ChangedX/Y/Z değişkenlerinizi 0 olarak ayarladıktan sonra değiştiren hiçbir şey yoktur. Bunları başka bir kodda, sınıfın dışından mı ayarlıyorsunuz? –

+0

ChangedX/Y/Z'yi NewX/Y/Z'ye atamak amacınız nedir? Referans olarak aramadığınız için, MoveTo() kapsamı bittiğinde bu değerler kaybolacaktır. – Guclu

+0

Değişkenlere ulaşılamıyorsa, sınıfın birden fazla örneğiniz olduğu anlamına gelir. Bir sınıftaki değişkenleri paylaşmak için, sınıfın aynı örneğini kullanmanız veya değişkenleri statik hale getirmeniz gerekir, böylece sınıfın her aşamasında her zaman aynı olurlar. – jdweng

cevap

1

Ben doğru kod niyeti anlamış, bu sizin durumunuzda ne yapacağını geçerli:

internal class Point3D 
{ 
    public double x = 0, y = 0, z = 0, PreviousX, PreviousY, PreviousZ; 

    public void MoveTo(double NewX, double NewY, double NewZ) 
    { 

     PreviousX = x; // remember previous value to use in delta calculation 
     x = NewX; 

     PreviousY = y; 
     y = NewY; 

     PreviousZ = z; 
     z = NewZ; 

    } 

    public double DistanceTo() 
    { 
     double DeltaX = Math.Pow((x - PreviousX), 2); 
     double DeltaY = Math.Pow((y - PreviousY), 2); 
     double DeltaZ = Math.Pow((z - PreviousZ), 2); 

     return Math.Sqrt(DeltaX + DeltaY + DeltaZ); 

    } 
} 

kursları tavsiye gelince, bunu başında bazı video dersleri görmek her zaman iyidir başlattığınızda Örneğin, https://www.pluralsight.com/courses/object-oriented-programming-fundamentals-csharp (bu kursu kendi sitelerinde görebilir veya internette arayabilirsiniz).

+0

Tam olarak istediğim bu. Çok teşekkür ederim –

İlgili konular