Documente Academic
Documente Profesional
Documente Cultură
DrWalidM.Aly
Lecture1
RevisiononBasicJavaConcepts
1
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
TIOBEProgrammingCommunityIndexforDecember2011
http://www.tiobe.com
3
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
CourseMailGroup
http://groups.yahoo.com/group/JAVACS244/
4
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
InstallingNetBeans
http://netbeans.org/downloads/index.html
JDK7&NetBeansBundle
JDK7u3withNetBeans7.1
http://www.oracle.com/technetwork/java/javase/downloads/jdk7netbeansdownload432126.html
5
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
objectsandclasses
Weworkwithphysicalobjectsallthetime:televisions,cars,customers,reports,lightbulbs,printers.
Asoftwareobjectisarepresentationofathingthatwewanttomanipulateinourprogram.
Aclassisatemplatethatdefineswhatanobject'sdataandmethodswillbe.
objectssharetwocharacteristics:stateandbehavior.
Thestateofanobjectisrepresentedbyvariablesandbehaviorbyasetofmethods
OOPreflectshowpeoplethinkofrealworld.
classCircle classStudent
classclassName {
{ {
doubleradius; Stringname;
doubleGPA;
..
Variablesdescribingstate doublegetArea() ..
voidregisterUnit
{
Methodsdescribingbehavior {
} }
. }
} .
}
Studentobject1 Studentobject2
Name=AhmedAly Name=MohamedFathi
Registrationnumber=245245 Registrationnumber=34345
GPA=3.2 GPA=2.2
registeraunit registeraunit
6
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
ASimpleJavaclass
//author:AhmedAli
publicclassCar{
Stringcolor;
privateintspeed;
privateintnumOfDoors=4;
publicvoidincrementSpeed(intvalue){
..
}
publicvoiddecrementSpeed(intvalue){
..
}
publicintgetSpeed(){
..
}
publicbooleanisMoving()
{
..
}
publicstaticvoidgetNumberOfCars()
{
}
}
7
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
Javaclasses
publicclassA
Classesinyourprogrammightbeyourownclassesor {
classesthatalreadyexistinjavaAPI. publicstaticintx;
AJavaclasshasstaticandnonstaticvariables publicinty;
Javaclasshasstaticandnonstaticmethods(instancemembers) publicA()
JavaclasshasoneormoreConstructors {
Constructorsarespecialtypeofmethods,themusthavethe ..
samenameasclass,andwithnoreturntype. }
Weuseconstructortocreateobjectsfromclasses publicA(intz)
Variables,methodsandconstructorsareknownasclass {
members ..
}
classclassName publicstaticvoidm1()
{ {
..
Variablesdescribingstate
}
Constructors
Methodsdescribingbehavior publicvoidm2()
} {
..
}
}
8
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
HowtousetheclassMembers
publicclassA{
Staticmembersareaccessedbythenameofclass
publicstaticintx=10;
ex:A.x;A.m1(); publicinty=20;
Tousenonstaticmembersyouhavetocreateobjects publicA()
fromtheclassusingconstructor {
ex:Aa1=newA(); System.out.println("CreatingObject");
andthenaccessnonstaticmemberswiththeobject }
youcreated publicA(intz)
{
ex:a1.y;a1.m2();
System.out.println("CreatingObjectwithz="+z);
}
publicclassTest{ publicstaticvoidm1()
publicstaticvoidmain(String[]arg){ {
System.out.println("Hifromm1");
//accessstaticmembers
}
A.m1(); publicvoidm2()
inti=A.x; {
System.out.println("x="+i); System.out.println("Hifromm2");
//accessinstancemembers }
Aa1=newA(); }
a1.m2();
intj=a1.y;
System.out.println("y="+j);
}
}
9
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
Example:ClassRadio
publicclassRadio{
intvolume;
Stringstation; Radioobject1 volume=4
booleanpowerStatus; station=NegoomFM
Powerstatus=true
publicvoidincreaseVolume(){
volume++;
Radioobject2 volume=7
}
publicvoiddecreaseVolume(){ station=Quran
volume; Powerstatus=true
}
publicvoidchangeStation(StringnewStation){
station=newStation; Radioobject3 volume=0
} station=FM
publicvoidturnOn(){ Powerstatus=false
volume=3;
powerStatus=true; TurnOn
}
publicvoidturnOff(){
volume=0; volume=3
powerStatus=false; station=FM
} Powerstatus=true
10
}
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
Constructors
Aclassprovidesmethodsofaspecialtype,knownasconstructors,whichare
usedtocreateanewobject(instance).
class Circle {
Constructor must have the same name as the class double radius=0 ;
name. public Circle()
Constructorsdonothaveareturntypenotevenvoid, {
cannotbestatic.
}
default blank constructor, is provided automatically public Circle (double r)
onlyifnoconstructorsareexplicitlydeclaredintheclass. {
Aconstructorisgenerallyusedtodoinitialsetupforan radius=r;
object }
public double findArea()
{
//
}
}
multipleconstructorswiththesamenamebutdifferentsignaturescan
exist.(overloading)
11
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
Howtocreateanobjectfromclass?
Toconstructanobjectfromaclass,invokeaconstructoroftheclassusingthenew
operator,asfollows:newClassName(arguments);
constructorcancontainanytypeofcodethatanormalmethodcouldcontain.When
constructorisinvokedanobjectiscreatedandalsocodeinconstructorisexecuted.
DataType DefaultValue
Byteshortintlongfloatdouble 0
char '\u0000'
String(oranyobjectrefrence) null
boolean false
localvariables:thataredeclaredbutnotinitializedwillnotbesettoadefaultbythecompiler
Accessinganuninitializedlocalvariablewillresultinacompiletimeerror
14
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
AccessinganObject'sinstancevariablesandMethods
classTest{
classA publicstaticvoidmain(String[]arg)
{ {
publicinty; Aa1=newA();
publicintx; a1.x=7;
publicvoidm(){ a1.m2();
Aa2=newA();
} a2.x=10;
publicvoidm2(){ a2.m2();
y=9;
m(); }
} }
}
x=7 x=10
a1,a2areofreferencedatatype
a1 a2
Rules:
Instancevariableofobjectareaccessedfromanotherclassby:objectName.variableName
instancemethodsareaccessedfromanotherclassby:objectName.methodName(argument)
Insidesameclass,memberscanbecalledwiththeirnamesonly
15
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
Example:AccessingmembersofclassCircle
classCircle{ classTest{
publicintradius; publicstaticvoidmain(String[]arg)
publicdoublearea; {
publicvoidsetArea() Circlec1=newCircle();
{ c1.radius=5;
this.area=3.14*(this.radius)*(this.radius); c1.setArea();
} System.out.println(c1.area);
Circle() Circlec2=newCircle(8);
{ c2.setArea();
} System.out.println(c2.area);
Circle(intr) }
{ }
this.radius=r;
}
} radius=5 radius=8
area=3.14*5*5 area=3.14*8*8
c1 c2
Rule:
Instancevariablesininstancemethodsarealwaysrelatedtothe
callingobject,JAVAaddthis.beforeeachofthemimplicitly
Youcanomitwritingthis 16
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
Example:AccessingmembersofclassBankAccount
ClassBankAccount
publicclassBankAccount
{
intaccountNum=0; ClassBank
floataccountBalance=0;
publicBankAccount(){} publicclassBank
publicBankAccount(intaccountNumber,floatbalance) {
{
accountNum=accountNumber; publicstaticvoidmain(String[]arg)
accountBalance=balance; {
} BankAccountaccount1=newBankAccount();
voidsetAccountNumber(intnum)
{ account1.setAccountNumber(456);
accountNum=num; account1.deposit(1000);
} BankAccountaccount2=newBankAccount(100,200);
voidwithdraw(floatamount) }
{
accountBalance=accountBalanceamount; }
}
voiddeposit(floatamount)
{
accountBalance=accountBalance+amount;
}
} 17
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
StaticClassmembers:Staticvariables
classStudent{
Staticvariables(classVariables)
staticStringdean;
Ex:staticintx; Stringname;
intregistrationNumber;
Onlyonecopyofthisvariableexist,all Student(StringstudentName,intregNumber)
objectssharethesamecopywiththe
{
samevalue.
name=studentName;
Canbeaccessedwithoutcreationofany
registrationNumber=regNumber;
object.
}
Canbeaccessedinsameclassby
variableNameorclassname.varaibleName
}
orObjectName.variableName.
classTest{
Canbeaccessedinanotherclassby
publicstaticvoidmain(String[]arg)
classname.varaibleNameor
ObjectName.variableName. {
Student.dean="DrMohamed";
Studentstudent1=newStudent("AhmedAly",123);
Studentstudent2=newStudent("Akramahmed",367);
LocalVariablescanneverbedeclared System.out.println(student1.dean);
static. System.out.println(student2.dean);
}}
18
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
Example
p
classA{
staticintx;
inty;
x 1 }
3
2
y=0
y=1 classTest
{
publicstaticvoidmain(String[]arg)
a1 {
y=2
y=0
A.x++;
Aa1=newA();
a2 a1.x++;
a1.y++;
Aa2=newA();
a2.x++;
a2.y++;
a2.y++;
}
}
19
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly
StaticClassmembers:Staticmethods
classStudent{
staticStringdeanName;
Staticmethods Stringname;
intregistrationNumber;
Ex:staticvoidm(){} Student(StringstudentName,intregNumber){
Canbecalledwithoutcreationofanyobject
Canonlyaccessstaticvariablesandonlycall
name=studentName;
staticmethods. registrationNumber=regNumber;
CanbecalledinsameclassbymethodName() }
orclassname.methodName() publicstaticvoidsetDeanName(Stringname)
orObjectName.methodName() {
(sameeffect) deanName=name;
Canbecalledinanotherclassby }
classname.methodName()or
}
ObjectName.methodName()
(sameeffect)
classTest{
publicstaticvoidmain(String[]arg){
Student.setDeanName("DrMohamed");
Studentstudent1=newStudent("AhmedAly",123);
Studentstudent2=newStudent("Akramahmed",367);
}}
accessmodifiersandstatickeywordcan
appearinanyorder
lec1
CS244AdvancedProgrammingApplications DrWalidM.Aly
20
Yourrole
thiskeyword
passingbyvalueandpassingbyreference
Array
UMLclassdiagram
21
CS244AdvancedProgrammingApplications lec1 DrWalidM.Aly