diff options
| author | Carlos Maiolino <[email protected]> | 2025-07-10 22:55:07 +0200 |
|---|---|---|
| committer | Carlos Maiolino <[email protected]> | 2025-07-10 22:56:55 +0200 |
| commit | d98f46ce647846b0aa30b2e16a30fd4e152a1bf5 (patch) | |
| tree | 267474fcc77cf20b428f6f4c7f768ca09f4cfe0e /C/OOP/include | |
| parent | 869e68986aa8f69af6e7842260a68d1e5c6f796f (diff) | |
Add new code
Signed-off-by: Carlos Maiolino <[email protected]>
Diffstat (limited to 'C/OOP/include')
| -rw-r--r-- | C/OOP/include/animal_p.h | 23 | ||||
| -rw-r--r-- | C/OOP/include/animal_priv.h | 19 | ||||
| -rw-r--r-- | C/OOP/include/cat_p.h | 19 |
3 files changed, 61 insertions, 0 deletions
diff --git a/C/OOP/include/animal_p.h b/C/OOP/include/animal_p.h new file mode 100644 index 0000000..e09aa7c --- /dev/null +++ b/C/OOP/include/animal_p.h @@ -0,0 +1,23 @@ +/* Animal class public interface */ + +#ifndef ANIMAL_P_H +#define ANIMAL_P_H + +/* Forward declaration */ +struct animal; + +/* Alloc new object */ +struct animal* animal_new(void); + +/* Constructor - make_sound may be NULL*/ +void animal_ctor(struct animal*, void (*make_sound)(void)); + +/* Destructor */ +void animal_dtor(struct animal*); + +/* Behavior */ +void animal_get_name(struct animal*, char*); +void animal_set_name(struct animal*, const char*); +void animal_sound(void *); + +#endif /* ANIMAL_P_H */ diff --git a/C/OOP/include/animal_priv.h b/C/OOP/include/animal_priv.h new file mode 100644 index 0000000..78a83c1 --- /dev/null +++ b/C/OOP/include/animal_priv.h @@ -0,0 +1,19 @@ +/* Animal class private definition */ + +#ifndef ANIMAL_PRIV_H +#define ANIMAL_PRIV_H + +/* + * We use a "private" definition as a way to encapsulate it, hiding + * it from the users. + * + * Access to its private definition is only allowed to its sub-classes. + * + * We could enforce it by moving here the allocator and constructors + */ +struct animal { + char *name; + void (*make_sound) (void); +}; + +#endif /* ANIMAL_PRIV_H */ diff --git a/C/OOP/include/cat_p.h b/C/OOP/include/cat_p.h new file mode 100644 index 0000000..82bcfb1 --- /dev/null +++ b/C/OOP/include/cat_p.h @@ -0,0 +1,19 @@ +/* Cat class public interface */ + +#ifndef CAT_P_H +#define CAT_P_H + +struct cat; + +/* Allocator */ +struct cat *cat_new(void); + +/* Constructor */ +void cat_ctor(struct cat *); + +/* Destructor */ +void cat_dtor(struct cat *); + +/* Behavior functions inherited from Animal class */ + +#endif /* CAT_P_H */ |
