Classes... duvidas!

Bom dia colegas.

Sou mais um mero aprendiz de java, e venho aqui explicitar a minha seguinte duvida.

Eis a minha classe programa.

namespace Classes
{
    class Program
    {
        static void DoWork()
        {
            Pointx origin = new Pointx();
            Pointx bottomRight = new Pointx(1024, 1280);           
            double distance = origin.DistanceTo(bottomRight);
            Console.WriteLine("Distance is: {0}", distance);
            Console.WriteLine("No of Point objects: {0}", Pointx.ObjectCount());
        }

        static void Main(string[] args)
        {
            try
            {
                DoWork();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

E a minha classe Pointx.

namespace Classes
{
    class Pointx
    {
        private static int objectCount = 0;
        private int x, y;

        public static int ObjectCount()
        {
            return objectCount;
        }

        public Pointx()
        {
            //Console.WriteLine("Default constructor called");
            this.x = -1;
            this.y = -1;
            objectCount++;
        }
        public Pointx(int x, int y)
        {
            //Console.WriteLine("x:{0}, y:{1}", x, y);
            this.x = x;
            this.y = y;
            objectCount++;
        }      

        public double DistanceTo(Pointx other)
        {
            int xDiff = other.x;
            int yDiff = other.y;
            return Math.Sqrt((xDiff * yDiff) + (yDiff * yDiff));
        }
    }
}

Eis as minhas duvidas, a quem puder responde-las, ficarei agradecido.

1 - aqui estou chamando um construtor para origin que esta declarado como Pointx

E como que nesta linha eu consigo invocar o DistanceTo com o origin sendo que ele recebeu o meu construtor Pointx() que é um método implementado na classe Pointx??? Deu pra entender a questão?

Obrigado a quem puder me ajudar.

[quote=cmdmss]Bom dia colegas.

Eis as minhas duvidas, a quem puder responde-las, ficarei agradecido.

1 - aqui estou chamando um construtor para origin que esta declarado como Pointx

E como que nesta linha eu consigo invocar o DistanceTo com o origin sendo que ele recebeu o meu construtor Pointx() que é um método implementado na classe Pointx??? Deu pra entender a questão?

Obrigado a quem puder me ajudar.[/quote]

Bom dia cmdmss,

Primeira coisa, isso não é java, é .NET certo?

Construtor não é um método especial da classe. Construtor é utilizado para inicialização do objeto.

Toda vez que você faz o new é criado uma instância do objeto e atribuida para uma variável, no seu caso o nome da variável é origin.

Quando você cria uma instância do objeto este objeto irá possuir todos os atributos e métodos que a classe possui.

Pense em uma classe como se fosse um “molde”. Ao criar um objeto é como se você estivesse usando esta “forma” para criar um bolo, com o tamanho e as características desta forma.

Ao escrever o código

você está chamando o método DistanceTo que todos os objetos do tipo Pointx possuem.

espero ter sido claro

Abs

Não entendi direito a sua dúvida… Você está instanciando a classe PointX, o que lhe possibilita utilizar seus campos e métodos sem problemas

Você consegue chamar o metodo DistanceTo do origin, pois o origin é um Pointx, sendo assim o origin terá acesso a todos os métodos do Pointx.

Acredito que este seja um código C# e não Java…

É C# mas os conceitos são os mesmos

Perdão, não vi em que sessão do Fórum estava o tópico.
Realmente os conceitos são os mesmos.