{"id":16100949,"url":"https://github.com/marincervinschi/objectorientedprogramming","last_synced_at":"2026-04-26T23:31:31.074Z","repository":{"id":256415241,"uuid":"764115230","full_name":"MarinCervinschi/ObjectOrientedProgramming","owner":"MarinCervinschi","description":"Intermediate course introducing Object-Oriented Programming (OOP) principles with the Java language. It covers the evolution of programming languages, the limitations of procedural programming, and the key features of OOP.","archived":false,"fork":false,"pushed_at":"2024-09-11T15:07:58.000Z","size":4448,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T00:26:18.863Z","etag":null,"topics":["arrays","collections","exceptions","functions","generics","java","javabasics","javafx","oop","oop-principles","strings","threds"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarinCervinschi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-02-27T14:04:59.000Z","updated_at":"2024-09-11T15:14:20.000Z","dependencies_parsed_at":"2024-10-31T15:21:50.925Z","dependency_job_id":null,"html_url":"https://github.com/MarinCervinschi/ObjectOrientedProgramming","commit_stats":null,"previous_names":["marincervinschi/objectorientedprogramming"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MarinCervinschi/ObjectOrientedProgramming","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarinCervinschi%2FObjectOrientedProgramming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarinCervinschi%2FObjectOrientedProgramming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarinCervinschi%2FObjectOrientedProgramming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarinCervinschi%2FObjectOrientedProgramming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarinCervinschi","download_url":"https://codeload.github.com/MarinCervinschi/ObjectOrientedProgramming/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarinCervinschi%2FObjectOrientedProgramming/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32317163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"ssl_error","status_checked_at":"2026-04-26T23:26:25.802Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["arrays","collections","exceptions","functions","generics","java","javabasics","javafx","oop","oop-principles","strings","threds"],"created_at":"2024-10-09T18:48:45.114Z","updated_at":"2026-04-26T23:31:31.052Z","avatar_url":"https://github.com/MarinCervinschi.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"left\"\u003e\n  \u003cimg src=\"https://visitor-badge.laobi.icu/badge?page_id=MarinCervinschi.ObjectOrientedProgramming\u0026\"  /\u003e\n\u003c/div\u003e\n\n# ObjectOrientedProgramming\nIntermediate course introducing Object-Oriented Programming (OOP) principles with the Java language.\nIt covers the evolution of programming languages, the limitations of procedural programming, and the key features of OOP. The course includes various modules that delve into the basics of Java, object-oriented design, data structures, generics, functional programming, exceptions, and multi-threading. Each module is accompanied by practical lab exercises to reinforce the concepts learned.\n## Credits\n* **Course:** Object-Oriented Programming (https://github.com/nbicocchi/learn-java-core)\n* **Professor:** Prof. Nicola Bicocchi\n\n\n### Software\n\n* [JDK Development Kit 21](https://www.oracle.com/it/java/technologies/downloads/)\n* [IntelliJ IDEA](https://www.jetbrains.com/idea/) [Plugins: [Mermaid](https://plugins.jetbrains.com/plugin/20146-mermaid)]\n* [Scene Builder](https://gluonhq.com/products/scene-builder/)\n* [Docker Desktop](https://www.docker.com/products/docker-desktop/)\n* [Mermaid](https://mermaid.js.org/)\n\n### Modules\n[E1] From Functions to Classes\n\n* Evolution of programming languages\n* Limits of procedural programming\n* Modularization, reuse of code, and object-oriented programming\n* Object-oriented programming key features\n\n[E2] Basics\n\n\u003e Lab:\n\u003e [exercises.warmup](exercises/src/main/java/warmup),\n\u003e [exercises.arrays](exercises/src/main/java/arrays),\n\u003e [exercises.strings](exercises/src/main/java/strings)\n\n* Variables, methods and parameter passing\n* Fundamental data types\n* Decisions\n* Loops\n* Arrays (and brief introduction to ArrayList)\n* Strings\n* Input and output\n* Random numbers\n\n[E3] Object Oriented Design\n\n\u003e Lab: [exercises.oop](exercises/src/main/java/oop)\n\n* Instance variables and encapsulation\n* Specifying the public interface of a class (and its implementation)\n* Static variables and methods\n* Inheritance hierarchies\n* Abstract classes\n* Interfaces (and anonymous implementations)\n* Object: the cosmic superclass\n* Wrapper types\n* UML class diagrams\n\n[E4] Data Structures (Collections Framework)\n\n\u003e Lab: package [exercises.collections](exercises/src/main/java/collections)\n\n* Iterable and Iterator interfaces\n* List interface and its implementations (ArrayList, LinkedList)\n* Set interface and its implementations (HashSet, LinkedHashSet, TreeSet)\n* Deque interface and its implementations (ArrayDeque, LinkedList)\n* Map interface and its implementations (HashMap, LinkedHashMap, TreeMap)\n* Sorting and searching\n\n[E5] Generic Data Structures (Generics)\n\n\u003e Lab: [exercises.generics](exercises/src/main/java/generics)\n\n* Generic classes and type parameters\n* Implementing generic types\n* Generic methods\n* Constraining type parameters\n* Type erasure\n\n[E6] Functional Programming\n\n\u003e Lab: [exercises.functional](exercises/src/main/java/functional)\n\n* Lambda expressions\n* Functional interfaces\n* Producing, transforming, and collecting functional streams\n* The *Optional* type\n\n[E7] Exceptions\n\n\u003e Lab: [exercises.exceptions](exercises/src/main/java/exceptions)\n\n* Throwing exceptions\n* Catching exceptions\n* Checked and unchecked exceptions\n* Closing resources\n\n[E8] Multi-threading\n\n\u003e Lab: [exercises.threads](exercises/src/main/java/threads)\n\n* Thread states\n* Thread interference\n* Thread synchronisation (synchronised/wait/notify)\n* ExecutorService\n* Callable/Future/Task","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarincervinschi%2Fobjectorientedprogramming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarincervinschi%2Fobjectorientedprogramming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarincervinschi%2Fobjectorientedprogramming/lists"}