Best OO implementation?
Best OO implementation?
(OP)
Hi dear prgrammers,
I would like to know which of the following Implementations of an enxemple-Class is the best one:
Solution 1:
Solution 3: make another class for Book... I would like to avoid it for such a simple data.
What are the pros and cons (Parameters Public and Private)? Why? Is there a solution in between?
Is it important or just a matter of taste? Especially for 'books' (Struct Array) is this question relevant. can we have a Struct Array Parameter Public and unse the native getter & setter on it?
Thand you for sharing your opinion!
I would like to know which of the following Implementations of an enxemple-Class is the best one:
Solution 1:
CODE --> matlab
class Library < handle properties ( Private ) % Here Private ! address = ''; books = struct('name', {}, 'author', {}); end methods function obj = Library() end function address = GetAddress(obj) address = obj.address; end function SetAddress(obj, address) % check address ist string obj.address = address; end function AddBooks(obj, names, authors) % check params (cell arrays of strings) obj.books = [obj.books, struct('name', names, 'author', authors)]; end function SetBooks(obj, names, authors) % check params (cell arrays of strings) obj.books = []; obj.AddBooks(names, authors); end function books = GetBooksField(obj, index, field) % (check field in {'name', 'author'}) books = {obj.books(index).(field)}; end % Eventuell weitere Get.. und Set... für books end end % Use: schoolLib = Library(); schoolLib.SetAddress('Mond, 3er Stock'); schoolLib.SetBooks({'a', 'b', 'c'}, {'d', 'e', 'f'}); FirstBookName = schoolLib.GetBooksField(1, 'name');
CODE --> matlab
Solution 2: class Library < handle properties ( Public ) % Here Public ! address = ''; books = struct('name', {}, 'author', {}); end methods function obj = Library() end function set.address(obj, address) % check address is string obj.address = address; end function set.books(obj, books) % check books is struct array with string fields 'name', 'author' obj.books = books; end function AddBooks(obj, names, authors) % check params (cell arrays of strings) obj.books = [obj.books, struct('name', names, 'author', authors)]; end % Eventuell weitere Get.. und Set... für books end end % Use: schoolLib = Library(); schoolLib.address = 'Mond, 3er Stock'; schoolLib.books = struct('name', {'a', 'b', 'c'}, 'author', {'d', 'e', 'f'}); FirstBookName = schoolLib.books(1).name; schoolLib.books(1).name = 'new name';
Solution 3: make another class for Book... I would like to avoid it for such a simple data.
What are the pros and cons (Parameters Public and Private)? Why? Is there a solution in between?
Is it important or just a matter of taste? Especially for 'books' (Struct Array) is this question relevant. can we have a Struct Array Parameter Public and unse the native getter & setter on it?
Thand you for sharing your opinion!