import Ġjava . util .* Ġ// Random ìĿĦ ĠìĤ¬ìļ© íķĺê¸° ĠìľĦíķ´ Ġimport Ċ Ċ // íģ ´ë ŀĺìĬ¤ ëĬĶ Ġê°Ŀì²´ Ġì§Ģ íĸ¥ ĠíĶĦë¡ľê·¸ ëŀĺ ë° į ìĿĺ Ġì ´Ī ìĦĿ ìĿ´ ë©° Ġëį°ìĿ´íĦ° ( íĶĦ ë¡ľ í į¼ íĭ° ) ìĻĢ ĠëıĻ ìŀĳ ( ë© Ķ ìĦľ ëĵľ ) ë¥¼ Ġê°Ģì§Ģ ê³ł ĠìŀĪëĭ¤ . ĊĊĊ Ċ // Creating Ġclasses Ċ class ĠPerson ( var ĠfirstName : ĠString , Ġvar ĠlastName : ĠString ) Ġ{ Ġ// íģ ´ë ŀĺìĬ¤ Ġë Ĵ ¤ ìĹĲ Ġë°Ķ ë¡ľ Ġê¸°ë³¸ ĠìĥĿìĦ± ìŀĲ ë¥¼ Ġì¶Ķê°Ģ íķľëĭ¤ . ĊĠĠĠ Ġ// ì¤ĳ ê ´ Ħ íĺ¸ ĠìĤ¬ ìĿ´ ìĹĲ ĠìŀĪëĬĶ Ġëª¨ëĵł Ġê²ĥìĿ´ Ġíģ´ëŀĺìĬ¤ Ġë© ¤ ë²Ħ ìĿ´ëĭ¤ . ĊĠĠĠ Ġval ĠfullName Ġ// get () ìĿĦ Ġêµ¬íĺĦ íķ´ ĠSwift ìĿĺ Ġcomputed Ġproperty ì²ĺ ëŁ ¼ ĠìĤ¬ìļ©íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"$ firstName Ġ$ lastName " Ċ } ĊĊĊĊ Ċ // Reference Ġtypes Ċ class ĠSimple Person ( val Ġname : ĠString ) Ċ Ċ // Methods Ġand Ġmut ability Ċ class ĠGr ade ( val Ġletter : ĠString , Ġval Ġpoints : ĠDouble , Ġval Ġcredits : ĠDouble ) Ċ Ċ class ĠStudent ( ĊĠĠĠĠĠĠĠ Ġval ĠfirstName : ĠString , ĊĠĠĠĠĠĠĠ Ġval ĠlastName : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġgr ades : ĠMutable List < Grade > Ġ= Ġmutable ListOf (), Ġ// default Ġê°Ĵ ìľ¼ë¡ľ Ġë¹ Ī ĠList ĊĠĠĠĠĠĠĠ Ġvar Ġcredits : ĠDouble Ġ= Ġ 0 . 0 ) Ġ{ Ġ// ìĥĿ ìĦ± ìŀĲ ĊĊĠĠĠ Ġfun Ġrecord Grade ( grade : ĠGr ade ) Ġ{ Ġ// ë© Ķ ìĦľ ëĵľ ĊĠĠĠĠĠĠĠ Ġgr ades . add ( grade ) Ġ// Mutable List ëĬĶ Ġval ë¡ľ ĠìĦł ìĸ¸ ëĲĺ ìĹĪ ëįĶ ëĿ¼ ĠìļĶ ìĨĮ ë¥¼ Ġì¶Ķê°Ģ íķ´ Ġì¤ Ħ ĠìĪĺ ĠìŀĪëĭ¤ . ĊĠĠĠĠĠĠĠ Ġ// íķ´ ëĭ¹ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ê°Ģ Ġval ë¡ľ Ġì°¸ ì¡° ëĲĺëĬĶ Ġê²ĥ ê³¼ Ġìĥģ ê´Ģ ìĹ Ĩ ëĭ¤ . ĊĠĠĠĠĠĠĠ Ġcredits Ġ+= Ġgrade . credits ĊĠĠĠĠĠĠĠ Ġ// var ë¡ľ ĠìłķìĿĺ ëĲĺ ìĹĪ ê¸° ĠëķĮë¬¸ìĹĲ Ġë³Ģê²½ Ġê°ĢëĬ¥ íķĺëĭ¤ . Ġíķ´ëĭ¹ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ê°Ģ Ġval ë¡ľ Ġì°¸ ì¡° ëĲĺëĬĶ Ġê²ĥ ê³¼ Ġìĥģ ê´Ģ ìĹ Ĩ ëĭ¤ . ĊĠĠĠ Ġ} Ċ } ĊĊĊĊ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġ// ĠCreating Ġclasses ĊĠĠĠ Ġ// íģ ´ë ŀĺìĬ¤ ĠìĿ´ë¦Ħ ìĿĦ ĠìĤ¬ìļ© íķĺê³ł ĠìĥĿìĦ± ìŀĲ ìĹĲ ĠìĿ¸ ìĪĺ ë¥¼ ĠìłĦ ëĭ ¬ íķĺìĹ¬ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ë¥¼ ĠìĥĿìĦ± íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĠĠĠ Ġval Ġj ohn Ġ= ĠPerson ( firstName Ġ= Ġ" J oh nn y ", ĠlastName Ġ= Ġ" Apple seed ") ĊĠĠĠ Ġ// val Ġj ohn Ġ= ĠPerson (" J oh nn y ", Ġ" Apple seed ") Ġ// ëłĪ ìĿ´ ë¸Ķ ĠìĹĨ ìĿ´ ĠìĿ´ë ł ĩ ê²Į ĠìĥĿìĦ± íķł ĠìĪĺ ëıĦ ĠìŀĪëĭ¤ ( ìĪ ľ ìĦľ ëĬĶ Ġë§ ŀ ì¶ ° Ġì¤ ĺ ìķ¼ Ġíķľëĭ¤ ). ĊĠĠĠ Ġprintln ( john . fullName ) Ġ// Ġ> ĠJ oh nn y ĠApple seed ĊĊĊĊĊĠĠĠ Ġ// Reference Ġtypes ĊĠĠĠ Ġ// Kotlin ìĹĲìĦľ Ġíģ´ëŀĺìĬ¤ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ëĬĶ Ġë³Ģê²½ Ġê°ĢëĬ¥ íķľ Ġê°Ŀì²´ ìĿ´ëĭ¤ . Ġíģ´ëŀĺìĬ¤ ëĬĶ Ġì°¸ ì¡° Ġìľł íĺķ ìľ¼ë¡ľ Ġíģ´ëŀĺìĬ¤ ĠíĥĢ ìŀħ ìĿĺ Ġë³ĢìĪĺ ëĬĶ Ġìĭ¤ ìłľ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ë¥¼ ĠìłĢìŀ¥ íķĺì§Ģ ĠìķĬ ê³ł , Ġë©Ķ ëª¨ ë¦¬ ĠìľĦ ì¹ĺ ìĹĲ ĠëĮĢíķľ Ġì°¸ ì¡° ë¥¼ ĠìłĢìŀ¥ íķľëĭ¤ . ĊĠĠĠ Ġvar Ġvar 1 Ġ= ĠSimple Person ( name Ġ= Ġ" John ") ĊĠĠĠ Ġvar Ġvar 2 Ġ= Ġvar 1 ĊĠĠĠ Ġ// íģ ´ë ŀĺìĬ¤ ëĬĶ Ġì°¸ ì¡° Ġìľł íĺķ ìĿ´ ë¯ Ģë¡ľ , Ġvar 1 ê³¼ Ġvar 2 ëĬĶ ĠëıĻ ìĿ¼ íķľ Ġë©Ķ ëª¨ ë¦¬ ìĿĺ ĠìľĦ ì¹ĺ ë¥¼ Ġì°¸ ì¡° íķľëĭ¤ . ĊĊĠĠĠ Ġ// The Ġheap Ġvs . Ġthe Ġstack ĊĠĠĠ Ġ// íģ ´ë ŀĺìĬ¤ ìĻĢ Ġê°ĻìĿĢ Ġì°¸ ì¡° Ġìľł íĺķ ìĿĦ ĠìĥĿìĦ± íķĺë©´ Ġìĭ¤ ìłľ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ëĬĶ Ġí ŀ Ļ ìĿ´ ëĿ¼ ëĬĶ Ġë©Ķ ëª¨ ë¦¬ Ġìĺģ ìĹŃ ìĹĲ ĠìłĢìŀ¥ ëĲľ ëĭ¤ . ĊĠĠĠ Ġ// ê·¸ ĠìĻ ¸ ìĿĺ ĠëĮĢ ë¶Ģ ë¶Ħ ìĿĢ ĠìĬ¤ íĥĿ ìĿ´ ëĿ¼ ëĬĶ Ġë©Ķ ëª¨ ë¦¬ Ġìĺģ ìĹŃ ìĹĲ ĠìłĢìŀ¥ ëĲľ ëĭ¤ . Ġí ŀ Ļ ê³¼ ĠìĬ¤ íĥĿ ìĿĢ ĠíĶĦë¡ľê·¸ ëŀ¨ Ġìĭ¤íĸī ìĹĲ ĠíķĦ ìĪĺ ìłģìĿ¸ ĠìĹ Ń íķł ìĿĦ Ġíķľëĭ¤ . ĊĠĠĠ Ġ// âĢ¢ Ġìĭľ ìĬ¤ íħľ ìĿĢ ĠìĬ¤ íĥĿ ìĿĦ ĠìĤ¬ìļ© íķ´ Ġìĭ¤íĸī ĠìĬ¤ ëłĪ ëĵľ ìĹĲ ĠìķĦ ë¬´ ê²ĥ ëıĦ ĠìłĢìŀ¥ íķĺì§Ģ ĠìķĬ ëĬĶ ëĭ¤ . ĠìĿ´ ëĬĶ ĠCPU ê°Ģ ĠìĹ Ħ ê²© íķĺê²Į Ġê´Ģë¦¬ íķĺê³ł Ġìµľ ìłģ íĻĶ íķľëĭ¤ . ĊĠĠĠ Ġ// Ġ Ġíķ¨ìĪĺ ê°Ģ Ġë³ĢìĪĺ ë¥¼ ĠìĥĿìĦ± íķĺë©´ ĠìĬ¤ íĥĿ ìĿĢ Ġë³ĢìĪĺ ë¥¼ ĠìłĢìŀ¥ íķľ Ġëĭ¤ìĿĮ Ġíķ¨ìĪĺ ê°Ģ Ġì¢ ħ ë£Į ëĲ ł ĠëķĮ Ġë³ĢìĪĺ ë¥¼ ĠìĤ Ń ìłľ íķľëĭ¤ . ĠìĬ¤ íĥĿ ìĿĢ Ġìŀ ĺ Ġêµ¬ìĦ± ëĲĺìĸ´ ĠìŀĪ ê¸° ĠëķĮë¬¸ìĹĲ Ġí ļ¨ ìľ ¨ ìłģ ìĿ´ ê³ł Ġë¹ ł ë¥´ ëĭ¤ . ĊĠĠĠ Ġ// âĢ¢ Ġìĭľ ìĬ¤ íħľ ìĿĢ Ġí ŀ Ļ ìĿĦ ĠìĤ¬ìļ© íķĺìĹ¬ Ġì°¸ ì¡° Ġìľł íĺķ ìĿĺ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ë¥¼ ĠìłĢìŀ¥ íķľëĭ¤ . Ġí ŀ Ļ ìĿĢ ĠìĿ¼ ë°ĺ ìłģìľ¼ë¡ľ Ġìĭľ ìĬ¤ íħľ ìĿ´ Ġë©Ķ ëª¨ ë¦¬ Ġë¸ Ķ ë¡Ŀ ìĿĦ ĠìļĶ ì²Ń íķĺê³ł ĠëıĻ ìłģìľ¼ë¡ľ Ġíķł ëĭ¹ íķł ĠìĪĺ ĠìŀĪëĬĶ Ġë©Ķ ëª¨ ë¦¬ Ġí Ĵ Ģ ìĿ´ëĭ¤ . ĊĠĠĠ Ġ// Ġ Ġí ŀ Ļ ìĿĺ ĠëĿ¼ ìĿ´ íĶĦ ĠìĤ¬ ìĿ´ íģ ´ ìĿĢ Ġìľł ìĹ° íķĺê³ł ĠìĹ Ń ëıĻ ìłģ ìĿ´ëĭ¤ . ĠìĬ¤ íĥĿ ì²ĺ ëŁ ¼ ĠìŀĲ ëıĻ ìľ¼ë¡ľ Ġëį°ìĿ´íĦ°ë¥¼ ĠìĤ Ń ìłľ íķĺì§Ģ ĠìķĬ ê¸° ĠëķĮë¬¸ìĹĲ Ġì¶Ķê°Ģ ĠìŀĳìĹħ ìĿ´ ĠíķĦìļĶ íķĺëĭ¤ . ĠìĬ¤ íĥĿ ìĹĲ Ġë¹Ħ íķ´ ĠìĥĿìĦ± Ġë°ı Ġìłľ ê±° ĠìĨį ëıĦ ê°Ģ ĠëĬ Ĳ ë¦¬ ëĭ¤ . ĊĊĠĠĠ Ġ// íģ ´ë ŀĺìĬ¤ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ë¥¼ ĠìĥĿìĦ± íķł ĠëķĮ Ġì½Ķëĵľ ëĬĶ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ĠìŀĲ ì²´ ë¥¼ ĠìłĢìŀ¥ íķĺê¸° ĠìľĦíķ´ Ġí ŀ Ļ ìĿĺ Ġë©Ķ ëª¨ ë¦¬ Ġë¸ Ķ ë¡Ŀ ìĿĦ ĠìļĶ ì²Ń íķľëĭ¤ . ĠìĿ´ í ĽĦ Ġíķ´ëĭ¹ Ġë©Ķ ëª¨ ë¦¬ Ġì£¼ ìĨĮ ë¥¼ ĠìĬ¤ íĥĿ ìĿĺ Ġëªħ ëªħ ëĲľ Ġë³ĢìĪĺ ìĹĲ ĠìłĢìŀ¥ íķľëĭ¤ . ĊĊĠĠĠ Ġ// Working Ġwith Ġreferences ĊĠĠĠ Ġ// íģ ´ë ŀĺìĬ¤ ëĬĶ Ġì°¸ ì¡° Ġìľł íĺķ ìĿ´ ë¯ Ģë¡ľ Ġë³ĢìĪĺ ìĹĲ Ġíķł ëĭ¹ íķĺë©´ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ë¥¼ Ġë³ µ ìĤ¬ íķĺì§Ģ ĠìķĬ ê³ł Ġì°¸ ì¡° ë§Į Ġë³ µ ìĤ¬ ëĲľ ëĭ¤ . ĊĠĠĠ Ġvar Ġhome Owner Ġ= Ġj ohn ĊĠĠĠ Ġj ohn . firstName Ġ= Ġ" John " ĊĊĠĠĠ Ġprintln ( john . firstName ) ĠĠĠĠĠ Ġ// Ġ> ĠJohn ĊĠĠĠ Ġprintln ( home Owner . firstName ) Ġ// Ġ> ĠJohn ĊĠĠĠ Ġ// íģ ´ë ŀĺìĬ¤ ëĬĶ Ġì°¸ ì¡° Ġìľł íĺķ ìĿ´ ë¯ Ģë¡ľ Ġj ohn Ġë³ĢìĪĺ ìĿĺ ĠìĿ´ë¦Ħ ìĿĦ Ġë°Ķ ê ¿ ¨ ì§Ģë§Į , Ġhome Owner ìĿĺ ĠìĿ´ë¦Ħ ëıĦ Ġë³Ģê²½ ëĲľ ëĭ¤ ( ëıĻ ìĿ¼ íķľ Ġê°Ŀì²´ ë¥¼ Ġì°¸ ì¡° íķĺê³ł ĠìŀĪëĭ¤ ). ĊĊĠĠĠ Ġ// Object Ġidentity ĊĠĠĠ Ġ// Kotlin ìĹĲìĦľëĬĶ Ġ=== ĠìĹ° ìĤ° ìŀĲ ë¥¼ ĠìĤ¬ìļ© íķ´ Ġê°Ŀì²´ ìĿĺ Ġid ë¥¼ Ġë¹Ħ êµ Ĳ íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĠĠĠ Ġj ohn Ġ=== Ġhome Owner Ġ// Ġtrue ĊĠĠĠ Ġ// == ĠìĹ° ìĤ° ìŀĲ ê°Ģ ĠëĳĲ Ġê°Ĵ ìĿ´ Ġê°ĻìĿĢ ì§Ģ ĠíĻķìĿ¸ íķĺëĬĶ Ġê²ĥ Ġì² ĺ ëŁ ¼ Ġ=== ĠìĹ° ìĤ° ìŀĲ ëĬĶ ĠëĳĲ Ġê°ľ ìĿĺ Ġë©Ķ ëª¨ ë¦¬ Ġì£¼ ìĨĮ ë¥¼ Ġë¹Ħ êµ Ĳ íķ´ Ġì°¸ ì¡° Ġê°Ĵ ìĿ´ ĠëıĻ ìĿ¼ íķľ ì§Ģ Ġë°ĺíĻĺ íķľëĭ¤ . ĊĠĠĠ Ġ// ì¦ ī , Ġí ŀ Ļ ìĿĺ ĠëıĻ ìĿ¼ íķľ Ġëį°ìĿ´íĦ° Ġë¸ Ķ ë¡Ŀ ìĿĦ Ġê°Ģ ë¦¬ íĤ¤ ëĬĶ Ġì§Ģ ĠíĮ Ĳ ëĭ¨ íķľëĭ¤ . ĊĊĠĠĠ Ġval Ġimpost or John Ġ= ĠPerson ( firstName Ġ= Ġ" John ", ĠlastName Ġ= Ġ" Apple seed ") ĊĠĠĠ Ġj ohn Ġ=== Ġhome Owner Ġ// Ġtrue ĊĠĠĠ Ġj ohn Ġ=== Ġimpost or John Ġ// Ġfalse ĊĠĠĠ Ġimpost or John Ġ=== Ġhome Owner Ġ// Ġfalse ĊĊĠĠĠ Ġ// ìĹ¬ ê¸° ìĦľ Ġë³ĢìĪĺ ë¥¼ Ġìŀ¬ Ġíķł ëĭ¹ íķĺë©´ , Ġì°¸ ì¡° íķĺëĬĶ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ê°Ģ Ġë³Ģê²½ ëĲľ ëĭ¤ . ĊĠĠĠ Ġhome Owner Ġ= Ġimpost or John ĊĠĠĠ Ġj ohn Ġ=== Ġhome Owner Ġ// Ġfalse ĊĊĠĠĠ Ġhome Owner Ġ= Ġj ohn ĊĠĠĠ Ġj ohn Ġ=== Ġhome Owner Ġ// Ġtrue ĊĊĠĠĠ Ġ// == ĠìĹ° ìĤ° ìŀĲ ë¡ľ Ġìĭ Ŀ ë³Ħ íķł ĠìĪĺ ĠìĹĨ ëĬĶ Ġê²½ìļ° Ġìľł ìļ© íķĺê²Į ĠìĤ¬ìļ©íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĠĠĠ Ġvar Ġimpost ers Ġ= Ġ( 0 .. 1 0 0 ). map Ġ{ Ġ// List < Person > ĠíĥĢ ìŀħ ìĿ´ ĠëĲľëĭ¤ . Ġ// 1 0 1 ê°ľ ìĿĺ ĠPerson Ġê°Ŀì²´ ë¥¼ Ġë§Įëĵ¤ ìĸ´ ĠList ìĹĲ Ġëĭ ´ ëĬĶ ëĭ¤ . ĊĠĠĠĠĠĠĠ ĠPerson ( firstName Ġ= Ġ" John ", ĠlastName Ġ= Ġ" Apple seed ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġimpost ers . map Ġ{ ĊĠĠĠĠĠĠĠ Ġit . firstName Ġ== Ġ" John " Ġ&& Ġit . lastName Ġ== Ġ" Apple seed " ĊĠĠĠ Ġ}. contains ( true ) Ġ// Ġtrue ĊĠĠĠ Ġ// ìĿ´ Ġê²½ìļ° Ġ== ĠìĹ° ìĤ° ìŀĲ ëĬĶ Ġê°ģ Ġê°Ŀì²´ ëĵ¤ìĿĦ Ġìĭ Ŀ ë³Ħ íķł ĠìĪĺ ĠìĹĨ ëĭ¤ . Ġ=== ĠìĹ° ìĤ° ìŀĲ ë¡ľ Ġìĭ Ŀ ë³Ħ íķ´ìķ¼ Ġíķľëĭ¤ . ĊĊĠĠĠ Ġprintln ( imp ost ers . contains ( john )) Ġ// Ġ> Ġfalse Ġ// ë© Ķ ëª¨ ë¦¬ Ġì£¼ ìĨĮ ë¡ľ ĠíĮ Ĳ ëĭ¨ íķĺê¸° ĠëķĮë¬¸ìĹĲ Ġfalse ê°Ģ ĠëĲľëĭ¤ . ĊĊĠĠĠ Ġval Ġmutable Imp ost ers Ġ= Ġmutable ListOf < Person >() ĊĠĠĠ Ġmutable Imp ost ers . addAll ( imp ost ers ) Ġ// ì¶ Ķ ê°Ģ ĊĠĠĠ Ġmutable Imp ost ers . contains ( john ) Ġ// Ġfalse Ġ// ë© Ķ ëª¨ ë¦¬ Ġì£¼ ìĨĮ ë¡ľ ĠíĮ Ĳ ëĭ¨ íķĺê¸° ĠëķĮë¬¸ìĹĲ Ġfalse ê°Ģ ĠëĲľëĭ¤ . ĊĠĠĠ Ġmutable Imp ost ers . add ( Random (). nextInt ( 5 ), Ġj ohn ) Ġ// ì£¼ ìĸ´ ì§Ħ ĠìĿ¸ ëį ± ìĬ¤ ( ëŀ ľ ëį ¤ ) ìĹĲ Ġj ohn Ġê°Ŀì²´ ë¥¼ ĠìĤ ½ ĊĊĠĠĠ Ġprintln ( mutable Imp ost ers . contains ( john )) Ġ// Ġ> Ġtrue ĊĊĠĠĠ Ġval ĠindexOf John Ġ= Ġmutable Imp ost ers . indexOf ( john ) Ġ// ë© Ķ ëª¨ ë¦¬ Ġì£¼ ìĨĮ ë¡ľ Ġj ohn ìĿĺ Ġindex ë¥¼ Ġê°Ģ ìł¸ ìĺ ¨ ëĭ¤ . ĊĠĠĠ Ġif Ġ( indexOf John Ġ!= Ġ- 1 ) Ġ{ Ġ// - 1 ìĿ¸ Ġê²½ìļ° ëĬĶ Ġì ¡´ ìŀ¬ íķĺì§Ģ ĠìķĬ ëĬĶ Ġê²½ìļ° ĊĠĠĠĠĠĠĠ Ġmutable Imp ost ers [ indexOf John ]. lastName Ġ= Ġ" B anan ape el " ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln ( john . fullName ) Ġ// Ġ> ĠJohn ĠB anan ape el ĊĊĠĠĠ Ġ// Methods Ġand Ġmut ability ĊĠĠĠ Ġval Ġj ane Ġ= ĠStudent ( firstName Ġ= Ġ" J ane ", ĠlastName Ġ= Ġ" Apple seed ") ĊĠĠĠ Ġval Ġhistory Ġ= ĠGr ade ( letter Ġ= Ġ" B ", Ġpoints Ġ= Ġ 9 . 0 , Ġcredits Ġ= Ġ 3 . 0 ) ĊĠĠĠ Ġvar Ġmath Ġ= ĠGr ade ( letter Ġ= Ġ" A ", Ġpoints Ġ= Ġ 1 6 . 0 , Ġcredits Ġ= Ġ 4 . 0 ) ĊĊĠĠĠ Ġj ane . record Grade ( history ) ĊĠĠĠ Ġj ane . record Grade ( math ) ĊĠĠĠ Ġ// j ane ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ê°Ģ Ġval ìĿ´ ëĿ¼ ëıĦ Ġë©Ķ ìĦľ ëĵľë¥¼ ĠìĿ´ìļ© íķ´ ĠíĶĦë¡ľ í į¼ íĭ° ëĵ¤ìĿĦ Ġë³Ģê²½ íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĊĠĠĠ Ġ// Mut ability Ġand Ġconstants ĊĠĠĠ Ġ// ìĥģ ìĪĺ ë¥¼ ĠìłķìĿĺ íķł ĠëķĮ Ġìĥģ ìĪĺ ìĿĺ Ġê°Ĵ ìĿĢ Ġë³Ģê²½ íķł ĠìĪĺ ĠìĹĨ ëĭ¤ . Ġì°¸ ì¡° Ġìľł íĺķ ìĹĲìĦľ ìĿĺ ĠìĿ´ Ġê°Ĵ ìĿĢ Ġë©Ķ ëª¨ ë¦¬ Ġì£¼ ìĨĮ ë¥¼ ĠìĿĺ ë¯¸ íķľëĭ¤ . ĊĠĠĠ Ġ// ëĶ ° ëĿ¼ ìĦľ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ë¥¼ Ġìĥģ ìĪĺ ë¡ľ Ġë°Ľ ìĿĢ Ġê²½ìļ° ìĹĲëĬĶ Ġíķ´ëĭ¹ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ìĿĺ ĠíĶĦë¡ľ í į¼ íĭ° ë¥¼ Ġë³Ģê²½ Ġë¶Ī ê°Ģ ëĬ¥ íķľ Ġê²ĥìĿ´ ĠìķĦ ëĭĪ ëĿ¼ , ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ĠìŀĲ ì²´ ìĿĺ Ġì£¼ ìĨĮ ë¥¼ Ġë³Ģê²½ Ġë¶Ī ê°Ģ ëĬ¥ íķľ Ġê²ĥ ìĿ´ëĭ¤ . Ċ Ċ // ĠĠĠ Ġj ane Ġ= ĠStudent ( firstName Ġ= Ġ" John ", ĠlastName Ġ= Ġ" Apple seed ") Ġ// ĠError : Ġj ane Ġis Ġa Ġ` val ` Ġconstant ĊĊĠĠĠ Ġ// j ane ìĿĦ Ġvar ë¡ľ ĠìĦł ìĸ¸ íĸ Īëĭ¤ ë©´ , Ġëĭ¤ë¥¸ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ë¥¼ Ġíķł ëĭ¹ íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĠĠĠ Ġvar Ġj ane Var Ġ= ĠStudent ( firstName Ġ= Ġ" J ane ", ĠlastName Ġ= Ġ" Apple seed ") ĊĠĠĠ Ġj ane Var Ġ= ĠStudent ( firstName Ġ= Ġ" John ", ĠlastName Ġ= Ġ" Apple seed ") ĊĠĠĠ Ġ// ìĿ´ Ġê²½ìļ° ìĹĲëĬĶ ĠìĿ´ ìłĦ Ġê°Ŀì²´ ìĹĲ Ġì°¸ ì¡° íķĺ ëį ĺ Ġë©Ķ ëª¨ ë¦¬ ëĬĶ Ġíķ´ ìłľ ëĲľ ëĭ¤ . ĊĊĠĠĠ Ġ// íģ ´ë ŀĺìĬ¤ ìĿĺ ĠíĶĦë¡ľ í į¼ íĭ° ê°Ģ Ġê°Ĵ ĠíĥĢ ìŀħ ìĿ¸ Ġê²½ìļ° Ġìĥģ ìĪĺ ë¡ľ ĠìĦł ìĸ¸ íķĺë©´ , Ġê°ĴìĿĦ Ġë³Ģê²½ íķł ĠìĪĺ ĠìĹĨ ì§Ģë§Į ĊĠĠĠ Ġ// íķ´ ëĭ¹ ĠíĶĦë¡ľ í į¼ íĭ° ê°Ģ Ġì°¸ ì¡° ĠíĥĢ ìŀħ ìĿ¸ Ġê²½ìļ° ìĹĲëĬĶ Ġë§Ī ì° ¬ ê°Ģ ì§Ģ ë¡ľ Ġë©Ķ ëª¨ ë¦¬ Ġì£¼ ìĨĮ ë¥¼ Ġë³Ģê²½ Ġë¶Ī ê°Ģ ëĬ¥ íķľ Ġê²ĥ ìľ¼ë¡ľ Ġê°Ĵ ìĿĢ Ġë³Ģê²½ íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĊĊĊĊĠĠĠ Ġ// Under standing Ġstate Ġand Ġside Ġeffects ĊĠĠĠ Ġj ane . credits Ġ// Ġ 7 ĊĊĠĠĠ Ġmath Ġ= ĠGr ade ( letter Ġ= Ġ" A ", Ġpoints Ġ= Ġ 2 0 . 0 , Ġcredits Ġ= Ġ 5 . 0 ) ĊĠĠĠ Ġj ane . record Grade ( math ) ĊĠĠĠ Ġj ane . credits Ġ// Ġ 1 2 , Ġnot Ġ 8 ! ĊĠĠĠ Ġ// íģ ´ë ŀĺìĬ¤ ĠìĿ¸ ìĬ¤ íĦ´ ìĬ¤ ìĹĲìĦľ Ġê³µ ìľł ëĲĺëĬĶ Ġì°¸ ì¡° ìĹĲ ĠëĮĢíķľ Ġside Ġeffect ìĹĲ Ġì£¼ ìĿĺ íķ´ìķ¼ Ġíķľëĭ¤ . ĊĊĊĊĊĠĠĠ Ġ// Data Ġclasses ĊĠĠĠ Ġ// ëĳĲ Ġê°Ŀì²´ ê°Ģ ĠëıĻ ìĿ¼ íķľ ì§Ģ Ġë¹Ħ êµ Ĳ íķĺëĬĶ Ġíķĺ ê³ł , Ġì ī ¡ ê²Į Ġëį°ìĿ´íĦ°ë¥¼ Ġì¶ľëł¥ íķł ĠìĪĺ ĠìŀĪëĬĶ Ġë©Ķ ìĦľ ëĵľë¥¼ Ġì¶Ķê°Ģ íķľ ĠStudent Ġíģ´ëŀĺìĬ¤ ĠìłķìĿĺ ĊĠĠĠ Ġclass ĠStudent ( var ĠfirstName : ĠString , Ġvar ĠlastName : ĠString , Ġvar Ġid : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprime Ġ= Ġ 3 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġprime Ġ* Ġresult Ġ+ ĠfirstName . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġprime Ġ* Ġresult Ġ+ Ġid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġprime Ġ* Ġresult Ġ+ ĠlastName . hashCode () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ Ġ// == ĠìĹ° ìĤ° ìĿĺ ĠBoolean Ġë¹ Ī í ļ Ĳ Ġë°© ìĭĿ ìĿĦ ĠìłķìĿĺ íķľëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother . java Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġother Ġas ĠStudent ? ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( firstName Ġ!= Ġobj ?. firstName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġobj . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lastName Ġ!= Ġobj . lastName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ Ġ// toString ìĿĦ Ġêµ¬íĺĦ íķĺë©´ , Ġprintln Ġíķ¨ìĪĺ ìĹĲìĦľ Ġíķ´ëĭ¹ Ġê°Ŀì²´ Ġì¶ľëł¥ ìĭľ ìĹĲ Ġë³´ ìĹ¬ ì§Ģ ëĬĶ Ġë¬¸ ìŀĲ ìĹ´ ìĿĦ ĠìłķìĿĺ íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Student Ġ( firstName =$ firstName , ĠlastName =$ lastName , Ġid =$ id )" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcopy ( firstName : ĠString Ġ= Ġthis . firstName , ĠlastName : ĠString Ġ= Ġthis . lastName , Ġid : ĠInt Ġ= Ġthis . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠStudent ( firstName , ĠlastName , Ġid ) Ġ// íķ¨ ìĪĺ ê°Ģ Ġíķľ ì¤ Ħ ë¡ľ Ġë ģ Ŀ ëĤ ł ĠëķĮ ëĬĶ Ġ= Ġë¡ľ Ġíĳľ íĺĦ íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĠĠĠĠĠĠĠ Ġ// ê°Ĵ ìĿĦ Ġë³ µ ìĤ¬ íķľëĭ¤ . Ġë©Ķ ëª¨ ë¦¬ Ġì£¼ ìĨĮ ê¹Įì§Ģ Ġë³ µ ìĤ¬ íķĺ ì§Ħ ĠìķĬ ëĬĶ ëĭ¤ . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġal bert Ġ= ĠStudent ( firstName Ġ= Ġ" Al bert ", ĠlastName Ġ= Ġ" E inst ein ", Ġid Ġ= Ġ 1 ) ĊĠĠĠ Ġval Ġrich ard Ġ= ĠStudent ( firstName Ġ= Ġ" Rich ard ", ĠlastName Ġ= Ġ" Fe yn man ", Ġid Ġ= Ġ 2 ) ĊĠĠĠ Ġval Ġal bert Copy Ġ= Ġal bert . copy () ĊĊĠĠĠ Ġprintln ( al bert ) Ġ Ġ// Ġ> ĠStudent Ġ( firstName = Al bert , ĠlastName = E inst ein , Ġid = 1 ) ĊĠĠĠ Ġprintln ( rich ard ) Ġ// Ġ> ĠStudent Ġ( firstName = Rich ard , ĠlastName = Fe yn man , Ġid = 2 ) ĊĠĠĠ Ġprintln ( al bert Ġ== Ġrich ard ) Ġ// Ġ> Ġfalse ĊĠĠĠ Ġprintln ( al bert Ġ== Ġal bert Copy ) Ġ// Ġ> Ġtrue ĊĠĠĠ Ġprintln ( al bert Ġ=== Ġal bert Copy ) Ġ// Ġ> Ġfalse ĊĊĠĠĠ Ġ// ìľĦ ìĻĢ Ġê°ĻìĿĢ Ġíģ´ëŀĺìĬ¤ ëĬĶ Ġë§¤ ìļ° ĠìĿ¼ ë°ĺ ìłģ ìĿ´ ê³ł ĠìŀĲ ì£¼ ĠìĤ¬ìļ© ëĲĺ ë¯ Ģë¡ľ , ĠKotlin ìĹĲìĦľëĬĶ Ġdata Ġclass ë¥¼ ĠëĶ° ë¡ľ Ġìłľê³µ íķľëĭ¤ . ĊĠĠĠ Ġdata Ġclass ĠStudent Data ( var ĠfirstName : ĠString , Ġvar ĠlastName : ĠString , Ġvar Ġid : ĠInt ) ĊĠĠĠ Ġ// class Ġí Ĥ¤ ìĽĮ ëĵľ Ġìķ ŀ ìĹĲ Ġdata ë¥¼ Ġì¶Ķê°Ģ íķ´ Ġì£¼ ê¸° ë§Į Ġíķĺ ë©´ Ġdata Ġclass ê°Ģ ĠìłķìĿĺ ëĲľ ëĭ¤ . ĠìĿ´ ìĻ¸ ìĹĲëĬĶ ĠìĿ¼ ë°ĺ Ġíģ´ëŀĺìĬ¤ ìĿĺ ĠìłķìĿĺ ìĻĢ Ġê°Ļ ëĭ¤ . ĊĠĠĠ Ġ// ì¦ ī ĠìľĦ ìĹĲ ĠìĥĪ ë¡ľ ĠìłķìĿĺ ëĲľ ĠStudent Ġíģ´ëŀĺìĬ¤ ë¥¼ Ġíķľ Ġì¤ Ħ ë¡ľ ĠëıĻ ìĿ¼ íķĺê²Į ĠìĥĿìĦ± íķł ĠìĪĺ ĠìŀĪëĭ¤ . ĊĊĠĠĠ Ġval Ġmar ie Ġ= ĠStudent Data (" Mar ie ", Ġ" Cur ie ", Ġid Ġ= Ġ 1 ) ĊĠĠĠ Ġval Ġem my Ġ= ĠStudent Data (" Em my ", Ġ" No ether ", Ġid Ġ= Ġ 2 ) ĊĠĠĠ Ġval Ġmar ie Copy Ġ= Ġmar ie . copy () ĊĊĠĠĠ Ġprintln ( mar ie ) Ġ// Ġ> ĠStudent Data ( firstName = Mar ie , ĠlastName = Cur ie , Ġid = 1 ) ĊĠĠĠ Ġprintln ( em my ) Ġ Ġ// Ġ> ĠStudent Data ( firstName = Em my , ĠlastName = No ether , Ġid = 2 ) ĊĠĠĠ Ġprintln ( mar ie Ġ== Ġem my ) Ġ// Ġ> Ġfalse ĊĠĠĠ Ġprintln ( mar ie Ġ== Ġmar ie Copy ) Ġ// Ġ> Ġtrue ĊĠĠĠ Ġprintln ( mar ie Ġ=== Ġmar ie Copy ) Ġ// Ġ> Ġfalse ĊĊĠĠĠ Ġ// Dest ruct uring Ġdeclarations ĊĠĠĠ Ġval Ġ( firstName , ĠlastName , Ġid ) Ġ= Ġmar ie ĊĠĠĠ Ġ// ëį°ìĿ´íĦ° Ġíģ´ëŀĺìĬ¤ ĠëĤ ´ë ¶ Ģ ìĿĺ Ġëį°ìĿ´íĦ°ë¥¼ Ġì¶Ķ ì¶ľ íķ´ Ġìĺ ¬ ĠìĪĺ ĠìŀĪëĭ¤ . Ġê°ģ Ġë³ĢìĪĺ ìĹĲ ĠìĨį ìĦ± Ġê°Ĵ ìĿ´ Ġíķł ëĭ¹ ĠëĲľëĭ¤ . ĊĊĠĠĠ Ġprintln ( firstName ) Ġ// Ġ> ĠMar ie ĊĠĠĠ Ġprintln ( lastName ) Ġ Ġ// Ġ> ĠCur ie ĊĠĠĠ Ġprintln ( id ) ĠĠĠĠĠĠĠ Ġ// Ġ> Ġ 1 ĊĠĠĠ Ġ// for Ġloop ë¡ľ Ġë§ µ ìĹĲ ĠìłĦ ëĭ ¬ íķĺëĬĶ Ġëĵ± ìĹĲ Ġìľł ìļ© íķĺê²Į ĠìĤ¬ìļ©íķł ĠìĪĺ ĠìŀĪëĭ¤ . Ċ }