java-hw1.pdf

‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﺑﺮﻧﺎﻣﻪ ﺳﺎزي ﭘﻴﺸﺮﻓﺘﻪ‬
‫داﻧﺸﻜﺪه م‪.‬ﻛﺎﻣﭙﻴﻮﺗﺮ‪ ،‬داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ‬
‫ﺗﻤﺮﻳﻦ ﺳﺮي اول‬
‫زﻣﺎن ﺗﺤﻮﻳﻞ ‪ 25 :‬ﻓﺮوردﻳﻦ ‪86‬‬
‫ﺗﻤﺮﻳﻦ ﻫﺎ را ﺗﺎ ﻧﻴﻤﻪ ﺷﺐ زﺑﺎن ﺗﺤﻮﻳﻞ ﺑﻪ آدرس اي‪-‬ﻣﻴﻞ درس ارﺳﺎل ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪email‬‬
‫‪subject‬‬
‫‪Body‬‬
‫‪Attachment‬‬
‫‪[email protected]‬‬
‫‪hw1-StudentID‬‬
‫ﺧﺎﻟﯽ ﺑﻤﺎﻧﺪ‬
‫‪hw1.java‬‬
‫‪2‬‬
‫در اﻳـــﻦ ﺗﻤـــﺮﻳﻦ ﺷـــﻤﺎ ﻣـــﻲ ﺑﺎﻳـــﺴﺖ ﻳـــﻚ ﺻـــﻒ ‪ 1‬را ﭘﻴـــﺎده ﺳـــﺎزي ﻧﻤﺎﻳﻴـــﺪ‪ .‬ﺑـــﺮاي اﻳﻨﻜـــﺎر واﺳـــﻂ‬
‫‪ java.util.Collection‬را ﭘﻴﺎده ﺳﺎزي ﻧﻤﺎﻳﻴﺪ ﻳﺎ از ﻛﻼس ‪ java.util.AbstractQueue‬ﻣـﺸﺘﻖ‬
‫ﺑﮕﻴﺮﻳﺪ‪ .‬ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﺷﻤﺎ‬
‫ﺑﻪ ﻫﻴﭻ ﻋﻨﻮان ﻣﺠﺎز ﻧﻴﺴﺘﻴﺪ ﻛﻪ از ﻫﻴﭻ ﻳـﻚ از ‪ container‬ﻫـﺎي ﻣﻮﺟـﻮد در‬
‫ﺑﺴﺘﻪ ‪ ) java.util‬ﻣﻨﺠﻤﻠﻪ ﺧﻮد ‪ ( queue‬اﺳﺘﻔﺎده ﻧﻤﺎﻳﻴﺪ‪ .‬ﺑﻨﺎﺑﺮ اﻳﻦ ﻧﻮﺷﺘﻦ ﺻﻒ از ﭘﺎﻳﻪ ﺑﺮ ﻋﻬﺪه ﺷﻤﺎ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫واﺳﻂ ‪ Collection‬ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫{ >‪public interface Collection<E> extends Iterable<E‬‬
‫☺‬
‫;)(‪int size‬‬
‫☺‬
‫;)(‪boolean isEmpty‬‬
‫☺‬
‫;)‪boolean contains(Object o‬‬
‫☺‬
‫;)(‪Iterator<E> iterator‬‬
‫☺‬
‫;)(‪Object[] toArray‬‬
‫☺‬
‫;)‪<T> T[] toArray(T[] a‬‬
‫☺‬
‫;)‪boolean add(E o‬‬
‫☺‬
‫;)‪boolean remove(Object o‬‬
‫☺‬
‫;)‪boolean containsAll(Collection<?> c‬‬
‫☺‬
‫;)‪boolean addAll(Collection<? extends E> c‬‬
‫☺‬
‫;)‪boolean removeAll(Collection<?> c‬‬
‫☺‬
‫;)‪boolean retainAll(Collection<?> c‬‬
‫☺‬
‫;)(‪void clear‬‬
‫☺‬
‫;)‪boolean equals(Object o‬‬
‫☺‬
‫;)(‪int hashCode‬‬
‫}‬
‫‪T‬‬
‫‪T‬‬
‫‪T‬‬
‫ﻧﻴﺎزي ﺑﻪ اﺳﺘﻔﺎده از ‪ Generic Programming‬ﻧﻤﻲ ﺑﺎﺷﺪ‪ .‬ﻣﻲ ﺗﻮاﻧﻴﺪ از ‪ Object‬ﺑﻪ ﺻﻮرت ﻋﺎم ﻳﺎ ﻛﻼس‬
‫‪ ) node‬ﻛﻪ زﺣﻤﺖ ﻧﻮﺷﺘﻨﺶ را ﺧﻮدﺗﺎن ﻣﻲ ﻛﺸﻴﺪ! ( ﺑﺮاي ﻋﻨﺎﺻﺮي ﻛﻪ در ﺻﻒ ﻧﮕﻪ ﻣﻲ دارﻳﺪ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﭘﻴﺎده‬
‫ﺳﺎزي ﻣﺘﺪ ﻫﺎﻳﻲ ﻛﻪ ﻣﺸﺨﺺ ﺷﺪه اﻧﺪ اﻟﺰاﻣﻲ ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﺑﺮاي ﺑﺎﻗﻲ ﻣﺘﺪ ﻫﺎ از ﻳﻚ ﺑﻠﻮك ﺧﺎﻟﻲ اﺳﺘﻔﺎده ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪queue 1‬‬
‫‪interface 2‬‬
‫ﺷﻤﺎ ﺑﺎﻳﺪ در ﻛﻼس ‪ ) hw1‬ﻛﻼس اﺻﻠﻲ ﺑﺮﻧﺎﻣﻪ ( ﻛﻼس ﺻﻔﻲ را ﻛﻪ ﻧﻮﺷﺘﻪ اﻳﺪ ﺗﺴﺖ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺑﺮاي اﻳﻨﻜﺎر ﺗﻮﺳﻂ‬
‫‪ javax.swing.JOptionPane.showInputDialog‬ﺗﻌﺪادي ﺷﻴﺊ را از ﻛﺎرﺑﺮ درﻳﺎﻓﺖ ﻧﻤﻮده و در ﺻﻒ‬
‫درج ﻧﻤﺎﻳﻴﺪ و ﺑﺮ روي آﻧﻬﺎ ﻋﻤﻠﻴﺎت ﻣﺨﺘﻠﻒ ﺻﻒ را ﺗﺴﺖ ﻛﻨﻴﺪ‪.‬‬
‫ﻣﺨﺘﺼﺮي درﺑﺎره ﺻﻒ‬
‫ﺻﻒ ﻫﺎ از ﺟﻤﻠﻪ ﺳﺎده ﺗﺮﻳﻦ داده ﺳﺎﺧﺘﺎر ﻫﺎي ﻣﻮﺟﻮد ﻣﻲ ﺑﺎﺷﻨﺪ ﻛﻪ ﻋﻤﻮﻣﺎ ﺑﻪ دو ﺻﻮرت ‪ 3FIFO‬ﻳﺎ ﺻﻒ‬
‫اوﻟﻮﻳﺖ ‪ 4‬ﭘﻴﺎده ﺳﺎزي ﻣﻲ ﺷﻮﻧﺪ‪.‬‬
‫در ﭘﻴﺎده ﺳﺎزي ﺑﻪ ﺷﻜﻞ ‪ ) FIFO‬ﻛﻪ ﺳﺎده ﺗﺮﻳﻦ ﻧﻮع ﻣﻲ ﺑﺎﺷﺪ و ﺗﻮﺳﻂ آراﻳﻪ ﻳﺎ ‪ linkList‬ﻗﺎﺑﻞ اﻧﺠﺎم‬
‫اﺳﺖ( اﺷﻴﺎء ﺑﻪ ﻫﻤﺎن ﺗﺮﺗﻴﺒﻲ ﻛﻪ ﺑﻪ ﺻﻒ وارد ﻣﻲ ﺷﻮﻧﺪ از ﺻﻒ ﺧﺎرج ﻫﻢ ﻣﻲ ﺷﻮﻧﺪ‪ .‬در ﭘﻴﺎده ﺳﺎزي ﺻﻒ اوﻟﻮﻳﺖ‬
‫اﺷﻴﺎ ﺑﺪون ﺗﻮﺟﻪ ﺑﻪ ﺗﺮﺗﻴﺐ درﺟﺸﺎن و ﺗﻨﻬﺎ ﺑﺮ اﺳﺎس اوﻟﻮﻳﺘﻲ ﻛﻪ ﺑﻪ آﻧﻬﺎ اﺧﺘﺼﺎص داده ﺷﺪه اﺳﺖ از روي ﺻﻒ ﺑﺮ‬
‫داﺷﺘﻪ ﻣﻲ ﺷﻮﻧﺪ‪ .‬راﻳﺞ ﺗﺮﻳﻦ راه ﭘﻴﺎده ﺳﺎزي ﺻﻒ اوﻟﻮﻳﺖ اﺳﺘﻔﺎده از درﺧﺖ ﻳﺎ ﻫﻴﭗ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﺑﻨﺎﺑﺮ اﻳﻦ ﻳﻚ ﭘﻴﺎده ﺳﺎزي آﺳﺎن ﺑﺮاي ﺻﻒ ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﺎﺷﺪ‪:‬‬
‫{‪public class adel‬‬
‫{)‪public static void main(String... args‬‬
‫; )(‪queue a = new queue‬‬
‫;)‪a.add(1‬‬
‫;)‪a.add(2‬‬
‫;))(‪System.out.println("removed from q:" + a.remove‬‬
‫{) ‪for( Object o : a‬‬
‫;)‪System.out.println("remaining object:" + o‬‬
‫}‬
‫}‬
‫}‬
‫{‪class queue extends java.util.LinkedList‬‬
‫{)(‪public Object remove‬‬
‫; )(‪return removeFirst‬‬
‫}‬
‫}‬
‫ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ‪.‬‬
‫‪First-In-First-Out 3‬‬
‫‪Priority Queue 4‬‬