Skip to content

Object-oriented programming support #1

@lcnvdl

Description

@lcnvdl

This ticket aims to introduce comprehensive support for object-oriented programming (OOP) in HtmlGo. The goal is to enhance the language with essential OOP concepts, such as classes, objects, inheritance, and encapsulation, enabling developers to write more modular and reusable code.

Key Objectives:

  • Implement a class-based system: Define a syntax for creating classes, including class declarations, constructors, and methods.
  • Enable object instantiation: Allow developers to create instances of classes using constructors.
  • Support inheritance: Introduce the ability to create derived classes that inherit properties and methods from base classes.
  • Encapsulate data: Provide mechanisms to control access to class members, allowing for data encapsulation and abstraction.
  • Implement method overriding: Allow derived classes to override methods inherited from base classes to provide customized behavior.
  • Support polymorphism: Enable the use of polymorphic behavior by allowing methods to be overridden and called dynamically based on the actual object type.
  • Provide access modifiers: Introduce access modifiers like public, private, and protected to control the visibility and accessibility of class members.

By implementing object-oriented programming support in HtmlGo, we aim to empower developers to build more robust and scalable applications, promoting code reusability, maintainability, and overall code organization. This ticket will involve significant changes to the language's core functionality and syntax, and it will require careful design and implementation considerations.

Contributions and suggestions are welcome as we work together to bring object-oriented programming capabilities to HtmlGo and unlock its potential for building sophisticated applications.

Please feel free to provide feedback, ask questions, and contribute to this ticket. Let's make HtmlGo an even more powerful and versatile language!

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions