\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{mahdi007} \pdfinfo{ /Title (oop-implementation-in-java.pdf) /Creator (Cheatography) /Author (mahdi007) /Subject (OOP implementation in JAVA Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{36C8D9} \definecolor{LightBackground}{HTML}{F2FBFC} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{OOP implementation in JAVA Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{mahdi007} via \textcolor{DarkBackground}{\uline{cheatography.com/139761/cs/29549/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}mahdi007 \\ \uline{cheatography.com/mahdi007} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 26th October, 2021.\\ Updated 26th October, 2021.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{x{1.34379 cm} x{3.63321 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{OOP goals}} \tn % Row 0 \SetRowColor{LightBackground} Simple modeling & An accurate representation of the real world by grouping objects with their properties and actions \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} \seqsplit{Robustness} & Easy maintenance and bug detection. Strong typing which results in more robust code (predictable behavior of your code) \tn % Row Count 9 (+ 5) % Row 2 \SetRowColor{LightBackground} \seqsplit{Scalability} & Adding functionality comes down to establishing new connections with other objects and methods. \tn % Row Count 13 (+ 4) % Row 3 \SetRowColor{white} \seqsplit{Reusability} & Available features allowing code reusability. (inheritance) \tn % Row Count 16 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.89126 cm} x{3.08574 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{OOP building blocks}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Class}} & A blueprint of an object: its properties, behavior and how it interacts with the exterior world. \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} {\bf{Attributes \& methods}} & The attributes are the properties of an object while the methods represents its dynamic behavior inside of your program. These attributes and methods define how the object should be accessed, its internal behavior and how it interacts other objects \tn % Row Count 15 (+ 11) % Row 2 \SetRowColor{LightBackground} {\bf{Objects}} & An instance of a class. (the class is the type definition and the object is the variable) =\textgreater{} all instances of a class share the same fields but have distinct data inside. \{\{nl\}\}In addition to its state (properties) and behavior (methods) an object has an identity which distincts it from other objects (alias/ memory address ...) \tn % Row Count 29 (+ 14) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.84149 cm} x{3.13551 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{OOP Paradigms}} \tn % Row 0 \SetRowColor{LightBackground} Abstraction & The selection of only useful information about an object for a particular application. \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} Encapsulation & Is the ability to control the access to the object's properties and methods, render them either visible (public) or hidden (visible only to internal functions). \tn % Row Count 11 (+ 7) % Row 2 \SetRowColor{LightBackground} Polymorphisme & The definition of different executions of a methode for different inputs and for different objects \tn % Row Count 15 (+ 4) % Row 3 \SetRowColor{white} Heritage & A description of a general\textbackslash{}specific relationship between classes. In shorts a subclass has all the properties/ actions of its super class + its own ones + its redefined ones \tn % Row Count 22 (+ 7) % Row 4 \SetRowColor{LightBackground} Composition, Agregation & The creation of a class/object as a collection of other objects \tn % Row Count 25 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{JAVA general infos}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{JAVA platform = JVM + API JAVA} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{JVM : execution environment for JAVA apps. \{\{nl\}\}Allows code to be machine independant as it executes inside of a virtual machine which abstracts the specefics of input\textbackslash{}output, hardware configuration, and different OSs. \{\{nl\}\}JVM has its own native language : byte code (juts like a real computer has its own instruction set)\{\{nl\}\}The JVM interprets byte code and manages memeory for the programs automatically by its Garbage collector} \tn % Row Count 10 (+ 9) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{JAVA API : libraries that abstracts diverse functionalities.} \tn % Row Count 12 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{JAVA main function (entry point)}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{public class test\{\{\{nl\}\} public static void main(String ar{[}{]})\{\{\{nl\}\} // code\{\{nl\}\} \}\{\{nl\}\}\}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Array declaration}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{In java you must allocate the memory for array frst by \{\{nl\}\}`type {[}{]} name=new type{[}size{]}` or `type name{[}{]} = new type{[}size{]}`\{\{nl\}\}Then if the type is not primitive you need to instantiate each field of the array by \{\{nl\}\}`array\_name{[}i{]}=new type(constructor attributes)`\{\{nl\}\}Also, we can declare arrays like this\{\{nl\}\}`type array\_name{[}{]}=\{val1,val2,val3\};`% Row Count 8 (+ 8) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Strings}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Declaration: }} \newline % Row Count 1 (+ 1) `String s="sample text";\{\{nl\}\}String s=new String("sample text")` \newline % Row Count 3 (+ 2) {\bf{Some string methods:}} \newline % Row Count 4 (+ 1) `s.equals(s2);`returns 1 is s=s2 and 0 otherwise \newline % Row Count 5 (+ 1) `s3=s1.concat(s2);` \textless{}=\textgreater{} `s3=s1+s2;` to concatenate strings% Row Count 7 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{0.9954 cm} x{3.9816 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{I/O}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{INPUT}} & in the header of the class file :\{\{nl\}\}`import java.util.Scanner;`\{\{nl\}\}in the method:\{\{nl\}\}`Scanner sc = new Scanner(System.in);`\{\{nl\}\}`int i = sc.nextInt();\{\{nl\}\}double d = sc.nextDouble();\{\{nl\}\}long l = sc.nextLong();\{\{nl\}\}byte b = sc.nextByte(); // etc` \tn % Row Count 9 (+ 9) % Row 1 \SetRowColor{white} {\bf{OUTPUT}} & for single variables:\{\{nl\}\}`System.out.println(single variable);`\{\{nl\}\}for multiple variables:\{\{nl\}\}`System.out.println(var1+" "+var2+...);`\{\{nl\}\} {\emph{the idea is to convert variables to strings and concatenate them}} \tn % Row Count 16 (+ 7) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Garbage Collection}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{//The garbage collector deallocates memory of unreferenced objects}} \newline //example \newline cl obj1=new cl(); \newline System.gc(); \newline {\bf{//the GC does nothing here since obj 1 is still referenced}} \newline cl=null; \newline System.gc(); \newline {\bf{//the GC deallocates the memory previously allocated for obj1 since it's no longer referenced\{\{nl\}\}//This makes the life of a programmer (for example when freeing an array of objects : a single command instead of a loop}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Properties of static class members}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Static attributes are initialized as follows: ints, floats -\textgreater{} {\bf{0}}, bools -\textgreater{} {\bf{false}}, references -\textgreater{} {\bf{null}}} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{static methods have access only to static methods and attributes of a class (obviously).They can't have use the "{\bf{this}}" reference since it doesn't make any sense.} \tn % Row Count 7 (+ 4) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{`{\bf{Class\_name.static\_atrribute\_name`}}\{\{nl\}\}`{\bf{Class\_name.static\_method\_name()`}}} \tn % Row Count 9 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Class members visibility}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{5.377cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/mahdi007_1635263754_Screenshot 2021-10-26 165545.png}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}