Skip to main content

Getters and Setters in design data type

Normally when we create a class, we always define Getters and Setters for instance variables to read and write its values. But it does not follow spirit of OOP/encapsulation. Encapsulation is a mechanism of hiding implemation details which process data from user, so the client should tell an Object what to do rather than asking an object about its state and telling it how to do.

Example:
CoordinateObject a = new CoordinateObject(1.0, 2.0);
CoordinateObject b = new CoordinateObject(3.0, 4.0);

// violates spirit of encapsulation
CoordinateObject c = new CoordinateObject(0.0, 0.0);
c.setX(a.getX + b.getX);
c.setY(a.getY + b.getY);

// better design
CoordinateObject a = new CoordinateObject(1.0, 2.0);
CoordinateObject b = new CoordinateObject(3.0, 4.0);
CoordinateObject c = a.plus(b);
(jbohn.blogspot.com)

Comments

Popular posts from this blog

How to Install SQL Server on MacOS with docker

 I'm writing a small tut for who need to install SQL Server on macOS using docker Step 1: Download the SQL Server Image sudo docker pull mcr.microsoft.com/mssql/server:2019-latest Step 2: Launch the SQL Server Image in Docker docker run -d --name example_sql_server -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Pass.word-123' -p 1433:1433 mcr.microsoft.com/mssql/server:2019-latest Step 3: Check the SQL Server Docker Container docker ps -a Step 4: Install SQL Server Command-Line Tool sudo npm install -g sql-cli Step 5: Connect to SQL Server  5.1 Using Command mssql -u sa -p Pass.word-123 5.2: Using VSCode to connect to sql server Using the extension SQL Server (mssql)

Create Grid using React native

After fist post about react native I feel I'm getting familiar with react native, this framework quite easy to use, today I continue with another tutorial about create a simple grid card in react native. Let see the our final result first:                             Let's start... Analytics Assump our data has below structure: We have an array of rows and each row has an array of columns, then I decided to use FlatList to display object in cloumns array in horizontal direction, you can imaging like below image. Gridcard design Card Item each card has a logo and a text. I'm using the Icon from lib react-native-vector-icons To have a flatlist in horizontal we use  horizontal = {true} property, and to make sure the width of flatlist is same as screen with we use  contentContainerStyle={{ flexGrow: 1, justifyContent: 'center' }} Grid Now the implementation quite easy now, just need to...