{"id":18470222,"url":"https://github.com/zer0m4n/poo-java","last_synced_at":"2025-04-16T01:35:11.259Z","repository":{"id":176202907,"uuid":"652008311","full_name":"Zer0M4n/POO-JAVA","owner":"Zer0M4n","description":"Notas de mi aprendizaje en java , las practicas las sacos de ejercidos que veo en internet","archived":false,"fork":false,"pushed_at":"2023-07-26T21:18:49.000Z","size":71,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T03:32:06.302Z","etag":null,"topics":["espanol","ghdesktop","ingles","java","jetbrains","learn","learning"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Zer0M4n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-10T19:34:23.000Z","updated_at":"2025-02-20T12:34:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"a4f1a2e6-d2cd-4f5a-a95c-92d4c85a09e0","html_url":"https://github.com/Zer0M4n/POO-JAVA","commit_stats":null,"previous_names":["zer0m4n/poo-java"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zer0M4n%2FPOO-JAVA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zer0M4n%2FPOO-JAVA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zer0M4n%2FPOO-JAVA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zer0M4n%2FPOO-JAVA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Zer0M4n","download_url":"https://codeload.github.com/Zer0M4n/POO-JAVA/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249182725,"owners_count":21226110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["espanol","ghdesktop","ingles","java","jetbrains","learn","learning"],"created_at":"2024-11-06T10:13:21.524Z","updated_at":"2025-04-16T01:35:11.252Z","avatar_url":"https://github.com/Zer0M4n.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Programación orientada a objetos(POO)\n\n**Uso del repositorio:**  Este repositorio sirve para mostrar mi aprendizaje en java , con notas y ejercicios .\n\n**Que es POO?**\nEs una de las paradigmas de programación , este tiene el fin de facilitar  programación  usando clases y objetos ( y otros conceptos que veré luego)\n\n# Clases y objetos\n\n**Que es una clase ?** \nUna clase nos funciona como plantilla que usaremos para facilitarnos  la vida, Dentro de la clase se va definir las características de la identidad y sus atributos.\n\n**Que es un objeto?**\nUn objeto seria una representación de algo\n\n**Sintaxis de la clase**\n```java\n//[Modificador de acceso] [Class] [Nombre de la clase] {}\npublic class Main {\n  int x = 5;\n}\n```\n**Sintaxis del objeto**\n```java\npublic class Main {\n  int x = 5;\n\n  public static void main(String[] args) {\n    //[Clase][nombre del objeto] = [new][]Nombre de la clase]\n    Main myObj = new Main();//Este es el objeto\n    System.out.println(myObj.x);\n    //out : 5\n  }\n}\n```\n **Se puede tener diferentes objetos?**\n Claro , lo que cambia en la sintaxis es que el nombre del objeto debe ser diferente\n ```java\npublic class Main {\n  int x = 5;\n\n  public static void main(String[] args) {\n    Main myObj1 = new Main();  // Object 1\n    Main myObj2 = new Main();  // Object 2\n    System.out.println(myObj1.x);\n    System.out.println(myObj2.x);\n  }\n}\n//out\n//5\n//5\n```\n## Atributos de la clase\n**Que es una atributo?** La explicación mas sencilla es que son variables de la clase, así de sencillo\n\n```java\npublic class Main {\n  int x = 5;\n  int y = 3;\n}\n//Aqui esta clase tiene dos atributos x , y \n```\n**Como llamamos los atributos?**\nPues muy sencillo , solamente llamaos las varibles usando el objeto\n```java\npublic class Main {\n  int x = 5;\n//LLamar un atributo [Nombre del objeto].[nombre de la variable]\n  public static void main(String[] args) {\n    Main myObj = new Main();\n    System.out.println(myObj.x);\n  }\n}\n```\nModificacion de atribtutos'\n```java\npublic class Main {\n  int x = 10;\n\n  public static void main(String[] args) {\n    Main myObj = new Main();\n    myObj.x = 25; // x is now 25\n    System.out.println(myObj.x);\n  }\n}\n```\n**Que hacer si no quiero que se modifiquen?**\nUsamos *~~final~~* para que nos se modifique el acceso\n```java\npublic class Main {\n  final int x = 10;\n\n  public static void main(String[] args) {\n    Main myObj = new Main();\n    myObj.x = 25; // will generate an error: cannot assign a value to a final variable\n    System.out.println(myObj.x);\n  }\n}\n```\n\n## Métodos de clase\n**Que es un método?** Los métodos son funciones que ejecutan códigos , sirven para separar apartados del programa y se efectúan con el objetos\n\n**Ejemplo**\n```java\npublic class Main {\n  static void myMethod() {\n    System.out.println(\"Hello World!\");\n  }\n\n  public static void main(String[] args) {\n    myMethod();\n  }\n}\n\n// Outputs \"Hello World!\"\n```\n\n\n# *Metodos Getter y Setter*\n\nLoa métodos ***Getter*** y ***Setter*** Son métodos que permiten el acceso a los atributos de una clase , que están encapsulados de manera privada\n\n**Metodo Getter**\nEl metodo get(\"Obtener\"): accede a la clase para retornarnos  el valor por lo cual la estructura de este metodo debe contener el tipo de valor que vamos a retornar el con ese metodo\n\n**Metodo Setter**\nEl metodo set(\"Establecer\") nos sirve para asignar un valor a un atributo de nuestra la clase , esto se hace de manera directa con este metodo, como este metodo no retorna nada debe contener la palabra void en su estructura y siempre debe recibir un parametro de entrada\n## Tipos de modificadores de acceso?\n\n - **Modificador de acceso prívate:** Este modificador es el mas restrictivo , la unica manera de acceder a los datos es mediante con la clase asociada\n - **El modificador por defecto (default):** Cuando no declaramos un modificador de acceso , java asigna el modificador default, este modificador permite  accesar los datos de la propia clase, como las clases del mismo paquete\n - **Modificador de acceso protected:** Los datos se acceden con la misma clase, clases del mismo paquete y clases heredados\n - **Modificador public:** Este es el modificador con mas libertad , podemos acceder  los datos donde sea \n -\u003ctable\u003e\n    \u003ctbody\u003e\u003ctr\u003e\n        \u003ctd\u003eMo\u003cwbr\u003edi\u003cwbr\u003efi\u003cwbr\u003eca\u003cwbr\u003edor\u003c/td\u003e\n        \u003ctd\u003eLa misma cla\u003cwbr\u003ese\u003c/td\u003e\n        \u003ctd\u003eMismo pa\u003cwbr\u003eque\u003cwbr\u003ete\u003c/td\u003e\n        \u003ctd\u003eSub\u003cwbr\u003eclase\u003c/td\u003e\n        \u003ctd\u003eOtro pa\u003cwbr\u003eque\u003cwbr\u003ete\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003epri\u003cwbr\u003evate\u003c/td\u003e\n        \u003ctd\u003eSí\u003c/td\u003e\n        \u003ctd\u003eNo\u003c/td\u003e\n        \u003ctd\u003eNo\u003c/td\u003e\n        \u003ctd\u003eNo\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003ede\u003cwbr\u003efault\u003c/td\u003e\n        \u003ctd\u003eSí\u003c/td\u003e\n        \u003ctd\u003eSí\u003c/td\u003e\n        \u003ctd\u003eNo\u003c/td\u003e\n        \u003ctd\u003eNo\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003epro\u003cwbr\u003etec\u003cwbr\u003eted\u003c/td\u003e\n        \u003ctd\u003eSí\u003c/td\u003e\n        \u003ctd\u003eSí\u003c/td\u003e\n        \u003ctd\u003eSí/No\u003c/td\u003e\n        \u003ctd\u003eNo\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003epu\u003cwbr\u003eblic\u003c/td\u003e\n        \u003ctd\u003eSí\u003c/td\u003e\n        \u003ctd\u003eSí\u003c/td\u003e\n        \u003ctd\u003eSí\u003c/td\u003e\n        \u003ctd\u003eSí\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\n## Constructores \n**Que es un constructor?** Un constructor  sirve para inicializar el objeto y establecer sus propiedades y valores predeterminados.\n\n**Sintaxis**\n\n```java\n// Create a Main class\npublic class Main {\n  int x;  // Create a class attribute\n\n  // Create a class constructor for the Main class\n  public Main() {\n    x = 5;  // Set the initial value for the class attribute x\n  }\n\n  public static void main(String[] args) {\n    Main myObj = new Main(); // Create an object of class Main (This will call the constructor)\n    System.out.println(myObj.x); // Print the value of x\n  }\n}\n\n// Outputs 5\n```\n## Herencia y Polimorfismo\n**Que es la herencia en POO?** La herencia en poo es cuando \"hederemos\" Características de una clase a otra, de esta forma nos permite reutilizar atributos y métodos para otras clases\n\n - **Clase Base:** La clase base es la que hereda sus atributos y metodos\n - **Clase Derivada:** Esta es la clase que recibe métodos y atributos\n \nPara poder hederar clases tenemos que usar la palabra **extends**\n\n**Sintaxis de la herencia**\n\n```java\nclass Vehicle {\n  protected String brand = \"Ford\";        // Vehicle attribute\n  public void honk() {                    // Vehicle method\n    System.out.println(\"Tuut, tuut!\");\n  }\n}\n\nclass Car extends Vehicle {\n  private String modelName = \"Mustang\";    // Car attribute\n  public static void main(String[] args) {\n\n    // Create a myCar object\n    Car myCar = new Car();\n\n    // Call the honk() method (from the Vehicle class) on the myCar object\n    myCar.honk();\n\n    // Display the value of the brand attribute (from the Vehicle class) and the value of the modelName from the Car class\n    System.out.println(myCar.brand + \" \" + myCar.modelName);\n  }\n}\n```\n\n**Que es el polimorfismo en POO?** El polimorfismo es la capacidad de un objeto en ofrecer diferentes respuestas \n\n**Ejemplos de polimorfismo**\n\n```java\nclass Animal {\n  public void animalSound() {\n    System.out.println(\"The animal makes a sound\");\n  }\n}\n\nclass Pig extends Animal {\n  public void animalSound() {\n    System.out.println(\"The pig says: wee wee\");\n  }\n}\n\nclass Dog extends Animal {\n  public void animalSound() {\n    System.out.println(\"The dog says: bow wow\");\n  }\n}\n\nclass Main {\n  public static void main(String[] args) {\n    Animal myAnimal = new Animal();  // Create a Animal object\n    Animal myPig = new Pig();  // Create a Pig object\n    Animal myDog = new Dog();  // Create a Dog object\n    myAnimal.animalSound();\n    myPig.animalSound();\n    myDog.animalSound();\n  }\n}\n\n```\n## Clases Abstractas\n**Clases abstractas:** Es una clase especial que no puede crear objetos , se usa como base para otros clase, solo se usa para heredar\n\n**Métodos abstractos:** Tiene como principal que no tiene cuerpo , solo tiene cuerpo cuando hederemos el método a una clase hija\n**Ejemplos de uso de clases abstractas**\n```java\n// Abstract class\nabstract class Animal {\n  // Abstract method (does not have a body)\n  public abstract void animalSound();\n  // Regular method\n  public void sleep() {\n    System.out.println(\"Zzz\");\n  }\n}\n\n// Subclass (inherit from Animal)\nclass Pig extends Animal {\n  public void animalSound() {\n    // The body of animalSound() is provided here\n    System.out.println(\"The pig says: wee wee\");\n  }\n}\n\nclass Main {\n  public static void main(String[] args) {\n    Pig myPig = new Pig(); // Create a Pig object\n    myPig.animalSound();\n    myPig.sleep();\n  }\n}\n```\n## Interfaces \n**Que es?** Una interfaz es una \"clase abstracta\" completamente que se utiliza para agrupar métodos relacionados con cuerpos vacíos:\n**Ejemplo**\n```java\n// interface\ninterface Animal {\n  public void animalSound(); // interface method (does not have a body)\n  public void run(); // interface method (does not have a body)\n}\n```\n\n## Excepciones\n\n**Que son las exepciones en java?** Las exepciones son formas que java nos da para controlar errores, son muy utiles para errores previstos y imprevistos\n\n**Tipos de exepciones en java:** \n-   **Excepciones irrecuperables:** Hijas de  **Error**. Son errores de la propia máquina virtual de Java.\n-   **Excepciones que NO es necesario gestionar:** Hijas de  **RunTimeException**. Son excepciones muy comunes, por ejemplo  **NullPointerException**,\n-\n**ArrayIndexOutOfBoundsException**.\n-   **Excepciones que es necesario gestionar:** Hijas de  **Exception**. Todas las demás, por ejemplo  **IOException**.\n![Diagramas de exepciones en java](https://4.bp.blogspot.com/-KH32JPEWi_s/V4QBF6yaaKI/AAAAAAAABRM/s56Y3mTNKuQ3x3TRjB8P9axzBm8zZoHjgCLcB/s640/Excepciones.png)\n\n**Ejemplo de exepciones**\n```java\npublic class Main {\n  public static void main(String[] args) {\n    try {\n      int[] myNumbers = {1, 2, 3};\n      System.out.println(myNumbers[10]);\n    } catch (Exception e) {\n      System.out.println(\"Something went wrong.\");\n    } finally {\n      System.out.println(\"The 'try catch' is finished.\");\n    }\n  }\n}\n```\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzer0m4n%2Fpoo-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzer0m4n%2Fpoo-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzer0m4n%2Fpoo-java/lists"}