elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Crear una instancia de clase para calculo de sueldo de trabajadores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear una instancia de clase para calculo de sueldo de trabajadores  (Leído 3,063 veces)
Maria Alejandra

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Crear una instancia de clase para calculo de sueldo de trabajadores
« en: 16 Abril 2016, 22:50 pm »

Código
  1. //Una empresa tiene dos turnos(mañana y tarde) en los que trabajan 8 empleados
  2. //(4 por la mañana y 4 por la tarde)
  3. //Confeccionar un programa que permita almacenar los sueldos de los empleados agrupados por turno.
  4. //Imprimir los gastos en sueldos de cada turno.
  5.  
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11.  
  12. namespace ConsoleApplication14
  13. {
  14.    class Trabajadores
  15.    {
  16.        private Double[] sueldoNocturno, sueldoDiurno;
  17.        private int[] cedula;
  18.        private String[] nombre, apellido;
  19.  
  20.        private void ingreso()
  21.        {
  22.            String cadena;
  23.            cedula = new int[20];
  24.            sueldoDiurno = new double[20];
  25.            sueldoNocturno = new double[20];
  26.            nombre = new string[20];
  27.            apellido = new string[20];
  28.  
  29.            Console.WriteLine("Ingrese Los datos de los empleados");
  30.  
  31.            Console.WriteLine("Turno Diurno:");
  32.  
  33.            for (int i = 1; i <= 5;  i++)
  34.            {
  35.                Console.Write(" ===== Dato N: " + i + " ===== ");
  36.                Console.Write("Nombre: ");
  37.                nombre[i] = Console.ReadLine();
  38.  
  39.                Console.WriteLine("");
  40.  
  41.                Console.Write("Apellido: ");
  42.                apellido[i] = Console.ReadLine();
  43.  
  44.                Console.WriteLine("");
  45.  
  46.                Console.Write("Cedula: ");
  47.                cadena = Console.ReadLine();
  48.                cedula[i] = int.Parse(cadena);
  49.  
  50.                Console.WriteLine("");
  51.  
  52.                Console.Write("Salario: ");
  53.                cadena = Console.ReadLine();
  54.                sueldoDiurno[i] = Double.Parse(cadena);
  55.                Console.Write(" ================= ");
  56.            }
  57.  
  58.            Console.ReadKey();
  59.            Console.Clear();
  60.  
  61.            Console.WriteLine("Turno Nocturno:");
  62.            for (int n = 1; n <= 5; n++)
  63.            {
  64.                Console.Write(" ===== Dato N: " + n + " ===== ");
  65.                Console.Write("Nombre: ");
  66.                nombre[n] = Console.ReadLine();
  67.  
  68.                Console.WriteLine("");
  69.  
  70.                Console.Write("Apellido: ");
  71.                apellido[n] = Console.ReadLine();
  72.  
  73.                Console.WriteLine("");
  74.  
  75.                Console.Write("Cedula: ");
  76.                cadena = Console.ReadLine();
  77.                cedula[n] = int.Parse(cadena);
  78.  
  79.                Console.WriteLine("");
  80.  
  81.                Console.Write("Salario: ");
  82.                cadena = Console.ReadLine();
  83.                sueldoNocturno[n] = Double.Parse(cadena);
  84.                Console.Write(" ================= ");
  85.  
  86.            }
  87.        }
  88.  
  89.        private double calculoDiurno()
  90.        {
  91.            double sueldoDiurno = 0;
  92.  
  93.            for (int i = 1; i <= 5; i++)
  94.            {
  95.                sueldoDiurno = (sueldoDiurno + sueldoNocturno[i]);
  96.            }
  97.            return sueldoDiurno;
  98.        }
  99.  
  100.        private double calculoNocturno()
  101.        {
  102.            double sueldoNocturno = 0;
  103.  
  104.            for (int i = 1; i <= 5; i++)
  105.            {
  106.                sueldoNocturno = (sueldoNocturno + sueldoDiurno[i]);
  107.            }
  108.            return sueldoNocturno;
  109.        }
  110.  
  111.        private void imprmir()
  112.        {
  113.            calculoNocturno();
  114.  
  115.            Trabajadores x = new Trabajadores();
  116.  
  117.            double ResultadoDiurno = 0;
  118.            double ResultadoNocturno = 0;
  119.  
  120.            ResultadoDiurno = x.calculoDiurno();
  121.            ResultadoNocturno = x.calculoNocturno();
  122.  
  123.            Console.WriteLine("Total de Sueldo Diurno: " + ResultadoDiurno);
  124.            Console.WriteLine("Total de sueldo Nocturno: " + ResultadoNocturno);
  125.  
  126.        }
  127.    }// class
  128.    class Program
  129.    {
  130.        static void Main(string[] args)
  131.        {
  132.            Trabajadores y = new Trabajadores();
  133.            y.// LLAMANDO A OBJETO
  134.        }
  135.    }
  136. }

2 pregunticas :)

1) estoy algo confudida no manejo muy bien ni comprendo los terminos de instanciacion me parecen algo enredado y no lo comprendo muy bien su funcionamiento según lo que he leido es algo asi:

Perro Rallo = new Perro();
Rallo  = se convierte en una nueva estancia ( que es una instancia expliquenmelo en terminos sencillos porfavor?  

y es del tipo perro = como del tipo perro ?

alguien que me pueda explicar esto un poco mas sencillo los terminos que se manejan en internet no los comprendo son algo muy complicado para mi

2)  en mi función imprimir puede acceder a los metodos ( creo que se les llama asi) para calcular los salario diurno y nocturno de mis trabajadores, pero ahora tengo un problema en la funcion main tratao de hacer lo mismo que realize en la funcion imprimir pero no puedo acceder a la clase trabajadores.

No se si lo que les acabo de decirles es el mejor manejo de los terminos, estoy empezando a programar y me gustaria aprender mucho, hablar tecnicamente y de forma correcta, por eso pido ayuda a ustedes si ven que equivoco corrijanme el :)


« Última modificación: 17 Abril 2016, 02:48 am por Eleкtro » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Crear una instancia de clase para calculo de sueldo de trabajadores
« Respuesta #1 en: 17 Abril 2016, 01:29 am »

Citar
que es una instancia expliquenmelo en terminos sencillos porfavor?
y es del tipo perro = como del tipo perro ?
Citar

Una variable tiene que tener un tipo. No es lo mismo una variable int que almacena un número, que una variable string que almacena una cadena de caracteres. Trabajadores almacena los datos que ahí describiste.

Una declaración de una clase (lo que ahí pusiste "class Trabajadores{...}") es la forma que tendrán esas variables. Esas variables tendrán tales métodos(ingreso, calculoDiurno...), y tendrán tales campos (cedula,nombre...). Esto es solo una idea. Para materializarla y crear una variable que contenga estos datos, hay que instanciarla, que no es más que asignarle memoria de la RAM, e interpretar esa memoria conforme al modelo.

No sé qué tal me expliqué, dime si algo no quedó claro.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Crear una instancia de clase para calculo de sueldo de trabajadores
« Respuesta #2 en: 17 Abril 2016, 02:39 am »

1) estoy algo confudida no manejo muy bien ni comprendo los terminos de instanciacion me parecen algo enredado y no lo comprendo muy bien su funcionamiento

que es una instancia expliquenmelo en terminos sencillos porfavor?  

alguien que me pueda explicar esto un poco mas sencillo los terminos que se manejan en internet no los comprendo son algo muy complicado para mi

Intentaré explicártelo de forma distinta a los tecnicismos que hayas leido por Internet, para intentar que te sea más fácil su comprensión...:

Se le suele llamar object (u objeto) a una representación de una estructura de datos encapsulada o una abstracción de algoritmos, que expone su funcionalidad mediante los miembros del lenguaje,
éstos miembros en la plataforma .Net pueden ser: variables (a esto se le suele llamar campos o fields), constantes (o constants), propiedades (o properties), métodos (o methods), funciones (o functions), enumeraciones (o enums), estructuras (o structs), eventos (o events), y un largo etcétera.

Pues bien, habiendo comprendido lo anterior, podemos decir que una instancia es una copia única del objeto, es un punto de referencia que habilita el acceso a los miembros que contenga definidos ese objeto.
Cuando creas una instancia, lo que estás haciendo es crear/asignar un espacio de memoria para consumir ese objeto por un tiempo de vida limitado, hasta que sea destruido/liberado.

También cabe mencionar que...:
  • Tal vez el fallo más común entre los programadores iniciados (por ese motivo te advierto) pueda ser el hecho de intentar utilizar los miembros de un objeto que no ha sido instanciado,
     y al no existir una referencia en memoria de ese objeto, esto causará un error de referencia nula en tiempo de ejecución.
     Para ser más exactos, se trata de una excepción del tipo System.NullReferenceException.



los metodos ( creo que se les llama asi)

El término estandarizado a veces simplemente depende de los factores que hacen que se popularice un término para un lenguaje en específico, puedes referirte a un método por otros términos cómo procedimiento (o procedure), subrutina (o sub-routine), rutina (o routine), y unidad (o unit), y toda esta terminología podría llevarte a la confusión, sobre todo el último término mencionado, ya que en realidad sirve para referirse a cualquier unidad de código (es decir, a cualquier linea/instrucción del código fuente por individual), pero... vaya, si, se llaman métodos.

En la plataforma .Net (y por lo general en el resto de lenguajes también), se le denomina 'método' a un bloque de código que ejecuta una serie de instrucciones y finaliza su ejecución sin devolver un tipo de valor.

Ejemplo:
Código
  1. public void MyMethod() {
  2. int value = 1;
  3. value += 3;
  4. Console.WriteLine(value);
  5. }

Si un método devuelve un tipo de valor, entonces se le denomina 'función'.

Ejemplo:
Código
  1. public int MyFunction() {
  2. int value = 1;
  3. value += 3;
  4. return value;
  5. }



Perro Rallo = new Perro();
Rallo  = se convierte en una nueva estancia

En una "estancia" no, pero en una instancia si :P.

Para instanciar una class, debes invocar al constructor (o ctor) de esa class, y para ello se utiliza el operador new (como en el ejemplo que has mostrado con new Perro()):

También cabe mencionar que...:
  • Un constructor es un método, solo que tiene un nombre estándar distinto que describe un propósito en particular.
  • Hay classes/types que son instanciables, y otros que no lo son (ej.: una class que en su firma tenga declarado el modificador abstract).
  • Una class instanciable puede tener más de un constructor definido. A cada constructor adicional se le denomina sobrecarga (u overload), y esto se aplica a cualquier tipo de miembro sobrecargable (ej.: métodos, funciones, y propiedades).
  • Puedes instanciar classes/types utilizando la función System.Activator.CreateInstance(), pero esta metodología se utiliza en circunstancias muy específicas, y generalmente por necesidad, por ejemplo en la ingeniería inversa de ensamblados .Net para instanciar types mediante técnicas por Reflection.



y es del tipo perro = como del tipo perro ?

El type es Perro, solo que es una nueva instancia de ese type, por lo que la respuesta a esa pregunta es: Sí.
(entendí mal la pregunta)

No se me ocurre muy bien como explicárte que es un Type sin profundizar en más cosas que necesitarían una explicación (cómo interfaces, estructuras, herencia, classes base e implementaciones), así que lo intentaré resumir de forma poco precisa...:
  • Un tipo (o type) es lo que asegura que las funcionalidades de un objeto existan en tiempo de ejecución.

Cualquier class que sea instanciable enfocada a representar cierta funcionalidad se considera un type (entre otro tipo de miembros que se consideran un type),
la class System.Object es un type que representa un objeto, y absolutamente todas las classes de .Net Framework heredan ese base-type (heredar, de forma muy resumida significa aplicarle a una class la funcionalidad definida en otra class, sin tener que volver a redeclarar esa funcionalidad),
otro ejemplo de un type sería la class System.Windows.Forms.Form que representa la funcionalidad y el comportamiento de una ventana de la interfáz gráfica de tu aplicación,
y otro ejemplo sería esta class instanciable de aquí abajo que representa los atributos de un perro:

Código
  1. public class Dog {
  2.  
  3. public string Name { get; set; }
  4. public string Race { get; set; }
  5. public int Age { get; set; }
  6.  
  7. private Dog() {
  8. }
  9.  
  10. public Dog(string name, string race, int age) {
  11. this.Name = name;
  12. this.Race = race;
  13. this.Age = age;
  14.  
  15. this.MyMethod();
  16. }
  17.  
  18. private void MyMethod() {
  19. // Do something...
  20. }
  21.  
  22. }

Eso sería considerado el type Dog. No lo veas como el nombre de la class, intenta visualizarlo más bien como la funcionalidad de una class instanciable, es decir, referirnos al type Dog es referirnos a una estructura de datos que implica 3 propiedades y un constructor definido para representar algo en particular.

Quizás te resulte más facil con un ejemplo para evaluar el type:
Código
  1. Dog dogInstance = new Dog(name: "Rompe-huesos", race: "Bulldog", age: 3);
  2. Type t = dogInstance.GetType();
  3. Console.WriteLine(string.Format("Dog type name     : {0}", t.Name));
  4. Console.WriteLine(string.Format("Dog type full name: {0}", t.FullName));

...O este otro ejemplo:
Código
  1. Dog dogInstance = new Dog(name: "Rompe-huesos", race: "Bulldog", age: 3);
  2. bool isDogType = (dogInstance is Dog);
  3. Console.WriteLine(string.Format("'dogInstance' object is type of 'Dog'?: {0}", Convert.ToString(isDogType)))

Una class que no se consideraría un type, sería cualquier class no-instanciable de propósito general, como por ejemplo la class System.IO.Path, que se considera un type, sin embargo, una class no-instanciable siempre será considerado del type System.Object, ya que es el base-type principal de la jerarquía de herencias de types de .Net.

Espero haber podido aclararte algunos conceptos. Si te fijas me he puesto algo pesado explicando las terminologías en Inglés entre paréntesis, pero es esencial conocerlas ...antes que sus nombres en Español.

Saludos
« Última modificación: 17 Abril 2016, 05:47 am por Eleкtro » En línea

Maria Alejandra

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Crear una instancia de clase para calculo de sueldo de trabajadores
« Respuesta #3 en: 17 Abril 2016, 19:19 pm »

Citar
que es una instancia expliquenmelo en terminos sencillos porfavor?
y es del tipo perro = como del tipo perro ?
Citar

Una variable tiene que tener un tipo. No es lo mismo una variable int que almacena un número, que una variable string que almacena una cadena de caracteres. Trabajadores almacena los datos que ahí describiste.

Una declaración de una clase (lo que ahí pusiste "class Trabajadores{...}") es la forma que tendrán esas variables. Esas variables tendrán tales métodos(ingreso, calculoDiurno...), y tendrán tales campos (cedula,nombre...). Esto es solo una idea. Para materializarla y crear una variable que contenga estos datos, hay que instanciarla, que no es más que asignarle memoria de la RAM, e interpretar esa memoria conforme al modelo.

No sé qué tal me expliqué, dime si algo no quedó claro.

siii bueno + o - he estado estudiando este tema y ya me voy familiarizando poco a poco, estoy iniciandome en programacion pero ahi voy Muchas gracias por tu tiempo
En línea

Maria Alejandra

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Crear una instancia de clase para calculo de sueldo de trabajadores
« Respuesta #4 en: 17 Abril 2016, 19:23 pm »

Intentaré explicártelo de forma distinta a los tecnicismos que hayas leido por Internet, para intentar que te sea más fácil su comprensión...:

Se le suele llamar object (u objeto) a una representación de una estructura de datos encapsulada o una abstracción de algoritmos, que expone su funcionalidad mediante los miembros del lenguaje,
éstos miembros en la plataforma .Net pueden ser: variables (a esto se le suele llamar campos o fields), constantes (o constants), propiedades (o properties), métodos (o methods), funciones (o functions), enumeraciones (o enums), estructuras (o structs), eventos (o events), y un largo etcétera.

Pues bien, habiendo comprendido lo anterior, podemos decir que una instancia es una copia única del objeto, es un punto de referencia que habilita el acceso a los miembros que contenga definidos ese objeto.
Cuando creas una instancia, lo que estás haciendo es crear/asignar un espacio de memoria para consumir ese objeto por un tiempo de vida limitado, hasta que sea destruido/liberado.

También cabe mencionar que...:
  • Tal vez el fallo más común entre los programadores iniciados (por ese motivo te advierto) pueda ser el hecho de intentar utilizar los miembros de un objeto que no ha sido instanciado,
     y al no existir una referencia en memoria de ese objeto, esto causará un error de referencia nula en tiempo de ejecución.
     Para ser más exactos, se trata de una excepción del tipo System.NullReferenceException.



El término estandarizado a veces simplemente depende de los factores que hacen que se popularice un término para un lenguaje en específico, puedes referirte a un método por otros términos cómo procedimiento (o procedure), subrutina (o sub-routine), rutina (o routine), y unidad (o unit), y toda esta terminología podría llevarte a la confusión, sobre todo el último término mencionado, ya que en realidad sirve para referirse a cualquier unidad de código (es decir, a cualquier linea/instrucción del código fuente por individual), pero... vaya, si, se llaman métodos.

En la plataforma .Net (y por lo general en el resto de lenguajes también), se le denomina 'método' a un bloque de código que ejecuta una serie de instrucciones y finaliza su ejecución sin devolver un tipo de valor.

Ejemplo:
Código
  1. public void MyMethod() {
  2. int value = 1;
  3. value += 3;
  4. Console.WriteLine(value);
  5. }

Si un método devuelve un tipo de valor, entonces se le denomina 'función'.

Ejemplo:
Código
  1. public int MyFunction() {
  2. int value = 1;
  3. value += 3;
  4. return value;
  5. }



En una "estancia" no, pero en una instancia si :P.

Para instanciar una class, debes invocar al constructor (o ctor) de esa class, y para ello se utiliza el operador new (como en el ejemplo que has mostrado con new Perro()):

También cabe mencionar que...:
  • Un constructor es un método, solo que tiene un nombre estándar distinto que describe un propósito en particular.
  • Hay classes/types que son instanciables, y otros que no lo son (ej.: una class que en su firma tenga declarado el modificador abstract).
  • Una class instanciable puede tener más de un constructor definido. A cada constructor adicional se le denomina sobrecarga (u overload), y esto se aplica a cualquier tipo de miembro sobrecargable (ej.: métodos, funciones, y propiedades).
  • Puedes instanciar classes/types utilizando la función System.Activator.CreateInstance(), pero esta metodología se utiliza en circunstancias muy específicas, y generalmente por necesidad, por ejemplo en la ingeniería inversa de ensamblados .Net para instanciar types mediante técnicas por Reflection.



El type es Perro, solo que es una nueva instancia de ese type, por lo que la respuesta a esa pregunta es: Sí.
(entendí mal la pregunta)

No se me ocurre muy bien como explicárte que es un Type sin profundizar en más cosas que necesitarían una explicación (cómo interfaces, estructuras, herencia, classes base e implementaciones), así que lo intentaré resumir de forma poco precisa...:
  • Un tipo (o type) es lo que asegura que las funcionalidades de un objeto existan en tiempo de ejecución.

Cualquier class que sea instanciable enfocada a representar cierta funcionalidad se considera un type (entre otro tipo de miembros que se consideran un type),
la class System.Object es un type que representa un objeto, y absolutamente todas las classes de .Net Framework heredan ese base-type (heredar, de forma muy resumida significa aplicarle a una class la funcionalidad definida en otra class, sin tener que volver a redeclarar esa funcionalidad),
otro ejemplo de un type sería la class System.Windows.Forms.Form que representa la funcionalidad y el comportamiento de una ventana de la interfáz gráfica de tu aplicación,
y otro ejemplo sería esta class instanciable de aquí abajo que representa los atributos de un perro:

Código
  1. public class Dog {
  2.  
  3. public string Name { get; set; }
  4. public string Race { get; set; }
  5. public int Age { get; set; }
  6.  
  7. private Dog() {
  8. }
  9.  
  10. public Dog(string name, string race, int age) {
  11. this.Name = name;
  12. this.Race = race;
  13. this.Age = age;
  14.  
  15. this.MyMethod();
  16. }
  17.  
  18. private void MyMethod() {
  19. // Do something...
  20. }
  21.  
  22. }

Eso sería considerado el type Dog. No lo veas como el nombre de la class, intenta visualizarlo más bien como la funcionalidad de una class instanciable, es decir, referirnos al type Dog es referirnos a una estructura de datos que implica 3 propiedades y un constructor definido para representar algo en particular.

Quizás te resulte más facil con un ejemplo para evaluar el type:
Código
  1. Dog dogInstance = new Dog(name: "Rompe-huesos", race: "Bulldog", age: 3);
  2. Type t = dogInstance.GetType();
  3. Console.WriteLine(string.Format("Dog type name     : {0}", t.Name));
  4. Console.WriteLine(string.Format("Dog type full name: {0}", t.FullName));

...O este otro ejemplo:
Código
  1. Dog dogInstance = new Dog(name: "Rompe-huesos", race: "Bulldog", age: 3);
  2. bool isDogType = (dogInstance is Dog);
  3. Console.WriteLine(string.Format("'dogInstance' object is type of 'Dog'?: {0}", Convert.ToString(isDogType)))

Una class que no se consideraría un type, sería cualquier class no-instanciable de propósito general, como por ejemplo la class System.IO.Path, que se considera un type, sin embargo, una class no-instanciable siempre será considerado del type System.Object, ya que es el base-type principal de la jerarquía de herencias de types de .Net.

Espero haber podido aclararte algunos conceptos. Si te fijas me he puesto algo pesado explicando las terminologías en Inglés entre paréntesis, pero es esencial conocerlas ...antes que sus nombres en Español.

Saludos

Muchas gracias por tu tiempo!!! voy poco a poco ya voy comprendiendo mejor :)
tengo que investigar eso se set y get  y el this primera vez que lo veo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines