How to calculate size of an Image

If ever you have a doubt on byte code of an image or size of an image, this is how it calculates of it.

bit and byte

Every image consists of blocks called pixels. As we all know data is always stored informs of bits. So even pixels will consume some bits of memory. For suppose we have only white and black 0 represents white and 1 represents black. So each of these pixels consume one bit of memory. For example: we have an image of size 100X200 pixels.

So total amount of memory in bits is 100*200*1=20,000 bits

A byte is equal to 8 bits.

So total amount of memory in bytes is 20,000/8=2500 bytes.

 

Now if you want to have shades of grey , definitely we must increase the bits of memory for a pixel. Say we have given 2 bits of memory for a pixel, we can store 4 shades of grey.

00 represents white

11 represent black

01 represents light grey

10 represent dark grey

For example: we have an image of size 100X200 pixels .

Total memory =(100*200*2)/8=5000 bytes

 

The Similar way if you allocate 3 bits per pixel, we can have 8 shades of color.

000 represent White

001 ,010,011,100,101,110 represent various shades of grey

111 represent black

Total memory =(100*200*3)/8=7500 bytes

From above 3 observations, we can easily derive a formula.

n bits can produce 2^n patterns (2 to the nth power)

Total no of colors= 2^bits  (2 to the power bits per pixel).

4 shades of colors=2*2 which is 2 bits per pixel

8 shades of  colors=2*2*2    which is 3 bits per pixel

16 shades of  colors=2*2*2*2 which is 4 bits per pixel

32 shades of  colors=2*2*2*2*2  which is 5 bits per pixel

64 shades of  colors=2*2*2*2*2*2  which is 6 bits per pixel

For a general image representation, we need 256 colors. So

256 shades of colors=2*2*2*2*2*2*2*2 which is 8 bits per pixel

 

256 colors

 

 

 

 

References:

http://en.wikipedia.org/wiki/8-bit_color

http://myweb.tiscali.co.uk/tamsdomain/ousite/M150/Working%20Out%20Bytes%20Needed%20To%20Store%20An%20Image.doc

How to make a connection using Proxy in java

This Post will explain you, What is Proxy and  How to connect to a Proxy using a java program. A full example with detailed explanation ensures you to get a complete idea of the proxy concept.

Sometimes we may need to connect to an URL or some resource from your application or java program via a proxy. Before showing you the code first let me explain you what is proxy? It’s purpose and how to use it?

What is a Proxy Server?

Proxy is an intermediate server which connects some set of machines and when one of those machines makes a request, proxy handles that request and sends its IP Address instead of actual machines IP.  This ensures

1. Faster response because the request would have already made my some other machine and so it may remain in cache. Some proxy servers also connects with memcached servers for faster response times.

2.  Administrator can monitor and filter the requests going outside to non intended websites and also he can restricts them.

3. Anonymous and hence more secure obviously.

Proxy Server

 

Full Example of proxy connection in java

ProxyConnections.java


package com.developprojects.javasnippets;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;

public class ProxyConnections {

public static void main(String args[]) {
try {
URL url = new URL(
"http://developprojects.com/wp-content/uploads/2013/12/logo_developProjects.png");
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(
"proxy.Test.com", 4327));
URLConnection connection = url.openConnection(proxy);
} catch (MalformedURLException exception) {
exception.printStackTrace();
} catch (IOException exception) {
exception.printStackTrace();
}

}

}

References:

https://www.whatismyip.com/what-is-a-proxy/

 

Encryption and Decryption using AES algorithm in Java

AESUtility.java

package com.americanexpress.gpzn.services.processservice.galaxy.v1.util;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class AESEncryptionDecryption {

 private static final String CLASS_NAME = "AESEncryptionDecryption";
 // 16 bytes or 128 bit Cipher Key..
 private static final String CIPHER_KEY = "054cbdad4808e3de";
 private static final String AES_ENCRYPTION = "AES";
 private static byte[] keyBytes = CIPHER_KEY.getBytes();

 public static void main(String args[]) {

 // Encrypting the Given String DevelopProjects.com using AES algorithm
 String encryptedString = getEncryptedString("DevelopProjects.com");
 System.out.println("Encrypted String generated using the AES :::"
 + encryptedString);
 // Decrypting the Encrypted String using AES algorithm
 String decryptedString = getDecryptStatus(encryptedString);
 System.out.println("Decrypted String generated using the AES :::"
 + decryptedString);
 }

 /*
 * This is the encryption method where we will be the using the Cipher key
 * to encrypt using AES Algorithm and encode using Apache Byte Code . We
 * will pass the input String appended with time stamp to Cipher to get an
 * encrypted String and we will it encode it using Apache byte.
 */
 public static String getEncryptedString(String inputString) {
 String methodName = "getEncryptedString";
 System.out.println(methodName + "***inputString::" + inputString);
 String encodedString = "";
 byte[] messageBytes = inputString.getBytes();
 SecretKeySpec secretKeySpecification = new SecretKeySpec(keyBytes,
 AES_ENCRYPTION);
 Cipher cipher;
 try {
 // Code to Encrypt
 cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
 cipher.init(Cipher.ENCRYPT_MODE, secretKeySpecification);
 byte[] encryptedBytes = cipher.doFinal(messageBytes);
 encodedString = Base64.encodeBase64URLSafeString(encryptedBytes);
 } catch (NoSuchAlgorithmException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());

 } catch (NoSuchPaddingException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (InvalidKeyException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (IllegalBlockSizeException e) {
 System.out.println("Exception::" + e.getMessage());
 } catch (BadPaddingException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 }
 return encodedString;
 }

 /*
 * This is the decryption method where we will be the using the Cipher key
 * to decrypt using AES Algorithm and decode using Apache Byte Code . We
 * will be decoding the encoded String which we will get from WEBUI and
 * decrypt the decoded String
 */
 public static String getDecryptStatus(String encryptedString) {
 String methodName = "getDecryptStatus";

 System.out.println(methodName
 + " Entry. Given encryptedString input is " + encryptedString);

 String decryptedString = "";
 SecretKeySpec secretKeySpecification = new SecretKeySpec(keyBytes,
 AES_ENCRYPTION);
 Cipher cipher;
 try {
 // Code to Decrypt
 cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
 cipher.init(Cipher.DECRYPT_MODE, secretKeySpecification);
 byte[] decodedBytes = Base64.decodeBase64(encryptedString);

 byte[] originalMessage = cipher.doFinal(decodedBytes);

 decryptedString = new String(originalMessage);

 } catch (NoSuchAlgorithmException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (NoSuchPaddingException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (InvalidKeyException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (IllegalBlockSizeException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (BadPaddingException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (NumberFormatException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 }

 return decryptedString;
 }
}

How to copy contents of a database table to another in java

Suppose say abc is a advertising company and it allows its’ visitors to test their advertisements in test environments before making them live. We need to implement such a requirement by copying the the records of one table into the another table under 2 different databases. I have written the java code to copy contents of a database table to another.

If ever you have some requirement or need to copy a contents of a table in a database to another, you might find the below example useful. In our below example we have 2 tables CM_ADS_METADATA_TEST and CM_ADS_METADATA under 2 different schemas dptest and dplive schemas.

For just a sample, we have copied a complex table with clob data and copied a record from test to live table. We did a select query to fetch a record,copied it to the file and again read that file and inserted the record into the live table.

CopyDataIntoDifDBs.java

package com.developprojects.main;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;

import oracle.jdbc.OraclePreparedStatement;
import oracle.jdbc.OracleResultSet;
import oracle.xdb.XMLType;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

/**
* @author Swarup Reddy
*
*/
public class CopyDataIntoDifDBs {
private static TransformerFactory transformerFactory = null;

public static void main(String[] args) throws SQLException,
IllegalArgumentException, TransformerConfigurationException,
TransformerException, IOException {

transformerFactory = TransformerFactory.newInstance();
Connection connection = null;
PreparedStatement preparedStatement = null;
OraclePreparedStatement stmt = null;
String sql = null;
ResultSet resultSet = null;
OracleResultSet orset = null;
XMLType poxml;
Document podoc;
final String clmnSprtr = ",,,";
final String rowSprtr = "###";
String contentToFile;
try {
System.out.println("Creating Connection..");
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection("jdbc:oracle:thin:@Localhost:1521:TestDB", "TestUser", "TestPassword");
System.out.println("Creating Connection Successfully");
sql = "SELECT * FROM dptest.CM_ADS_METADATA_TEST WHERE CM_TRMT_ID = 50131";
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
orset = (OracleResultSet) resultSet;
while (orset.next()) {
Long CM_TRMT_ID = orset.getLong(1);
System.out.println("CM_TRMT_ID " + CM_TRMT_ID.toString());
String ISO_ALPHA_LANG_CD = orset.getString(2).trim();
System.out.println("ISO_ALPHA_LANG_CD " + ISO_ALPHA_LANG_CD);
String MKT_CD = orset.getString(3).trim();
System.out.println("MKT_CD " + MKT_CD);
String PG_ID = orset.getString(4).trim();
System.out.println("PG_ID " + PG_ID);
poxml = XMLType.createXML(orset.getOPAQUE(5));
podoc = (Document) poxml.getDOM();
String TRMT_DTL_DA = getXMLFromDOM(podoc);
System.out.println("TRMT_DTL_DA ::" + TRMT_DTL_DA);
String PZN_DCSN_ENGINE_ABRV_NM = orset.getString(6).trim();
System.out.println("PZN_DCSN_ENGINE_ABRV_NM ::"
+ PZN_DCSN_ENGINE_ABRV_NM);
poxml = XMLType.createXML(orset.getOPAQUE(7));
podoc = (Document) poxml.getDOM();
String DCSN_ENGINE_CONV_TRMT_DA = getXMLFromDOM(podoc);
System.out.println("DCSN_ENGINE_CONV_TRMT_DA ::"
+ DCSN_ENGINE_CONV_TRMT_DA);
String LST_UPDT_USER_ID = orset.getString(8).trim();
System.out.println("LST_UPDT_USER_ID ::" + LST_UPDT_USER_ID);
Timestamp LST_UPDT_TS = orset.getTimestamp(9);
System.out.println("LST_UPDT_TS :: " + LST_UPDT_TS.toString());
contentToFile = CM_TRMT_ID.toString() + clmnSprtr
+ ISO_ALPHA_LANG_CD + clmnSprtr + MKT_CD + clmnSprtr
+ PG_ID + clmnSprtr + TRMT_DTL_DA + clmnSprtr
+ PZN_DCSN_ENGINE_ABRV_NM + clmnSprtr
+ DCSN_ENGINE_CONV_TRMT_DA + clmnSprtr
+ LST_UPDT_USER_ID + clmnSprtr + LST_UPDT_TS.toString()
+ rowSprtr;
InsertClob.writeToFile(contentToFile);
System.out.println("Content to file: \n" + contentToFile);

sql = "INSERT INTO dplive.CM_ADS_METADATA VALUES (?,?,?,?,?,?,?,?,?)";
stmt = (OraclePreparedStatement) connection
.prepareStatement(sql);
String insertData = InsertClob.readFromFile();
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("InsertString is: " + insertData);
System.out.println("");
System.out.println("");
System.out.println("");
String[] splitRows = insertData.split(rowSprtr);
System.out.println("Row value: " + splitRows[0]);
System.out.println("");
System.out.println("");
System.out.println("");
for (int i = 0; i < splitRows.length - 1; i++) {
System.out.println("splitRows.length::" + splitRows.length);
String[] splitColumns = splitRows[i].split(clmnSprtr);
System.out.println("splitColumns::" + splitColumns[0]);
stmt.setLong(1, Long.parseLong(splitColumns[0]));
stmt.setString(2, splitColumns[1]);
stmt.setString(3, splitColumns[2]);
stmt.setString(4, splitColumns[3]);

poxml = XMLType.createXML(connection, splitColumns[4]);
stmt.setObject(5, poxml);

stmt.setString(6, splitColumns[5]);

poxml = XMLType.createXML(connection, splitColumns[6]);
stmt.setObject(7, poxml);

stmt.setString(8, splitColumns[7]);
stmt.setTimestamp(9, Timestamp.valueOf(splitColumns[8]));
stmt.execute();

}
}
resultSet.close();
orset.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

}

// This method will convert a Document to String Object
public static String getXMLFromDOM(Document requestXMLDoc)
throws IllegalArgumentException, TransformerConfigurationException,
TransformerException {

if (requestXMLDoc == null) {
System.out.println("Supplied document object is null");
throw new IllegalArgumentException("Document cannot be null");
}
DOMSource source = new DOMSource(requestXMLDoc);
StreamResult result = new StreamResult(new StringWriter());
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(source, result);
String returnString = result.getWriter().toString();

return returnString;
}

public static void writeToFile(String content) throws IOException {

File file = new File("D:\\Sample Files\\offer.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();

}

public static String readFromFile() throws IOException {

File file = new File("D:\\Sample Files\\offer.txt");
if (!file.exists()) {
file.createNewFile();
}
FileReader fr = new FileReader(file.getAbsoluteFile());
BufferedReader br = new BufferedReader(fr);
StringBuffer content = new StringBuffer();
String temp = null;
int count = 0;
while ((temp = br.readLine()) != null) {
content.append(temp).append("\n");
count++;
}
System.out.println(count);
// br.reset();
fr.close();
br.close();
return content.toString();
}
}

Generated offer.txt File


50131,,,SV,,,SE,,,MYCASOA,,,<?xml version = '1.0'?>
<Treatment xmlns="http://www.americanexpress.com/galaxy/master/rule/v1/0/"><TreatmentMetadata><Attribute name="Phase">Draft</Attribute><Attribute name="ConversionTrackingId"/><Attribute name="Language">SV</Attribute><Attribute name="ReviewerEmail">Kalyan.A.Singirikonda@aexp.com</Attribute><Attribute name="Page">MYCASOA</Attribute><Attribute name="PointerValidator">https://cms.americanexpress.com/Render/docs/en/PZN/sv_SE/MYCA/TEXT/test.xml</Attribute><Attribute name="TreatmentStartDate">2014-09-03 16:00:00</Attribute><Attribute name="Notes"/><Attribute name="Priority">40</Attribute><Attribute name="Level2Description">Internal Acquisition_Cross-Sell</Attribute><Attribute name="SuppressionImpressionValue">9999</Attribute><Attribute name="Placement">TopLink</Attribute><Attribute name="ContentPointer">test</Attribute><Attribute name="Compliance">No</Attribute><Attribute name="TreatmentEndDate">2015-09-04 15:59:59</Attribute><Attribute name="RequesterEmail">Surya.P.Appisetty@aexp.com</Attribute><Attribute name="ReportingName">SESVChargeCorporateCardAcquisitionSwedenTestTrmt1234300c</Attribute><Attribute name="useDefaultOrOverrideInSuppression">Use Default</Attribute><Attribute name="Level1Description">Charge Corporate Card</Attribute><Attribute name="TargettingLevel">Customer</Attribute><Attribute name="OfferContentName">Sweden Test Trmt 1234</Attribute><Attribute name="ContentType">Text</Attribute><Attribute name="PagePlacementDimension">300c</Attribute><Attribute name="ApprovedDate"/><Attribute name="BusinessUnit">Charge</Attribute><Attribute name="ApprovedBy"/><Attribute name="Level0Description">Business Card</Attribute><Attribute name="CampaignObjective">Internal Acquisition_Cross-Sell</Attribute><Attribute name="FillerIndicator">KN</Attribute><Attribute name="Device"/><Attribute name="Weighting">99</Attribute><Attribute name="LastUpdated">2014-09-04 23:25:32</Attribute><Attribute name="Channel"/><Attribute name="CorpOnly">N</Attribute><Attribute name="TargettingType">Fixed</Attribute></TreatmentMetadata><RuleSet LogicalOperation="AND"><Rule><Expression><Category>Demographics</Category><LeftTerm TargetingLevel="Customer">PostCdZones</LeftTerm><Operator>includes</Operator><RightTerm><RightTermValue1>1234,6789</RightTermValue1></RightTerm></Expression></Rule></RuleSet></Treatment>,,,DEL,,,<?xml version = '1.0'?>
<PZNTreatment><PZNTreatmentMetaData><Treatment><Phase>Draft</Phase><ConversionTrackingId/><Language>SV</Language><Revieweremail>Kalyan.A.Singirikonda@aexp.com</Revieweremail><StartTs>2014-09-03 16:00:00</StartTs><Notes/><Priority>40</Priority><LegalApproval>No</LegalApproval><EndTs>2015-09-04 15:59:59</EndTs><Requestoremail>Surya.P.Appisetty@aexp.com</Requestoremail><ReportingName>SESVChargeCorporateCardAcquisitionSwedenTestTrmt1234300c</ReportingName><Lvl1Desc>Charge Corporate Card</Lvl1Desc><LowestTargetingLvl>Customer</LowestTargetingLvl><ContentNm>SwedenTestTrmt1234</ContentNm><ContentType>Text</ContentType><PlacementSize>300c</PlacementSize><ApprovedDate/><BusinessUnit>Charge</BusinessUnit><ApprovedBy/><Lvl0Desc>Business Card</Lvl0Desc><CampaignObjective>Internal Acquisition_Cross-Sell</CampaignObjective><FillerInd>KN</FillerInd><Device/><Weighting>99</Weighting><LastUpdated>2014-09-04 23:25:32</LastUpdated><Channel/><CorpOnly>N</CorpOnly><TargetingType>Fixed</TargetingType><DecisionEngine>DEL_SP</DecisionEngine><Client>AMEX</Client><RegionCd/><RptPageNm>MYCA SOA</RptPageNm><Lvl2Desc>Acquisition</Lvl2Desc><PlacementNm>TX300</PlacementNm><RptPlacementNm>TOPLINK</RptPlacementNm><ContentPointer>/sv_SE/MYCA/TEXT/test.xml</ContentPointer></Treatment></PZNTreatmentMetaData><PZNRuleMetaData><Rule><Targeting><CustProfile><PostCdZones><UIName>PostalCodeZones</UIName><include>1234,6789</include></PostCdZones></CustProfile></Targeting><EventCapping><MaxImpressionCt>9999</MaxImpressionCt></EventCapping><ControlGrp><Group2><Min>0</Min><Max>4</Max></Group2><Group3><Min>5</Min><Max>99</Max></Group3></ControlGrp></Rule></PZNRuleMetaData></PZNTreatment>,,,sappiset,,,2014-09-04 15:25:33.0###
Inserted Record into the Database


CM_TRMT_ID                  50131

ISO_ALPHA_LANG_CD           SV

MKT_CD                      SE

PG_ID                       MYCASOA

TRMT_DTL_DA                 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><Treatment ><TreatmentMetadata><Attribute name="Phase">Draft</Attribute><Attribute name="ConversionTrackingId"></TreatmentMetadata></Treatment>

PZN_DCSN_ENGINE_ABRV_NM     DEL

DCSN_ENGINE_CONV_TRMT_DA    <PZNTreatment><PZNTreatmentMetaData><Treatment><Phase>Draft</Phase><ConversionTrackingId/><Language>SV</Language></Treatment></PZNRuleMetaData></PZNTreatment>

LST_UPDT_USER_ID             sappiset

LST_UPDT_TS                  2014-09-04 15:25:33.0

Encapsulation in Java with Example

Encapsulation is a basic principle of Java. Let me explain you encapsulation with a simple example.After reading the concept completely, I’m pretty sure you will never need to look back again to learn encapsulation concept.

Encapsulation ensures to hide the implementation details of a class to the other classes. Basic elements in a class are instance variables and member functions. Let us assume that we have written a class “Car”. The class “car” has some public variables like minSpeed, maxSpeed and noOfTyres instances variables some methods using them to calculate some logic.
Now say your friend has written some class called BenzCar and instantiated your Car class and have modified the instance variables of your Car class by mistake by initializing maxSpeed to 0 KMS and minSpeed to 100 KMS which are invalid by logic. So, now you are in serious trouble. Isn’t it?
So, to prevent this kind of blunders you must prevent your Car Class’s instance variables initialization restricted by making them private and adding new public methods which should be the only way to initialize the instance variables of your class.

Simple Example for understanding Encapsulation

Without Encapsulation example:


Class Car
{
Public int minSpeed;
Public int maxSpeed;
Public int noOfTyres;
Public int OptimimSpeed(maxSpeed)
{
Return (maxSpeed)/2;
}
}
package com.developprojects.withOutEncapsulation;

public class BenzCar {
	public static void main(String args[]) {
		Car car = new Car();
		car.minSpeed = 100;
		car.maxSpeed = 0;
		int optimumSpeed = car.optimimSpeed(car.maxSpeed);
		System.out
				.println("OptimimSpeed of Benz Car with out encapsulation ::kms "
						+ optimumSpeed);
	}
}

How to implement Encapsulation in Java:

Encapsulation is essential key feature of Object Oriented Programming. We should follow some simple rules to implement encapsulation in java. They are:

  1. Instance variable needs to safe guarded from other classes by making them private or protected access modifiers
  2. Make methods public and instance variables can only be accessed directly using these public methods. The naming conventions of these methods should be like set<VariableName> and get<VariableName>

With Encapsulation Example:

package com.developprojects.encapsulation;

public class Car {

	private int minSpeed;
	private int maxSpeed;
	private int noOfTyres;

	/**
	 * @return the minSpeed
	 */
	public int getMinSpeed() {
		return minSpeed;
	}

	/**
	 * @param minSpeed
	 *            the minSpeed to set
	 */
	public void setMinSpeed(int minSpeed) {
		this.minSpeed = minSpeed;
	}

	/**
	 * @return the maxSpeed
	 */
	public int getMaxSpeed() {
		return maxSpeed;
	}

	/**
	 * @param maxSpeed
	 *            the maxSpeed to set
	 */
	public void setMaxSpeed(int maxSpeed) {
		this.maxSpeed = maxSpeed;
	}

	/**
	 * @return the noOfTyres
	 */
	public int getNoOfTyres() {
		return noOfTyres;
	}

	/**
	 * @param noOfTyres
	 *            the noOfTyres to set
	 */
	public void setNoOfTyres(int noOfTyres) {
		this.noOfTyres = noOfTyres;
	}

	/**
	 * @return the OptimimSpeed of the vehicle
	 */
	public int optimimSpeed(int maxSpeed) {
		return (maxSpeed) / 2;
	}

}
package com.developprojects.encapsulation;

public class BenzCar {

	public static void main(String args[]) {
		Car car = new Car();
		car.setMaxSpeed(100);
		car.setMinSpeed(0);
		int optimumSpeed = car.optimimSpeed(car.getMaxSpeed());
		System.out.println("OptimimSpeed of Benz Car:: kms " + optimumSpeed);
	}
}

From the above example, we have implemented encapsulation protecting the instance variables. Now even if we change the methods in actual class (Car class here). There is no change in the implementation class (BenzCar class).

Google Circle
Join my Circle on Google+

Plugin by Social Author Bio