Java TA - Computer Engineering, Sharif University of Technology
Download
Report
Transcript Java TA - Computer Engineering, Sharif University of Technology
TA Session 4
Advanced Programing TA Session,
Sharif University of Technology
Advanced
Programming
1
Constructors
• Can constructors call other constructors?
class A {
int x;
A() {
// How can I construct with A(10) here?
}
A(int x) {
this.x = x;
}
public static void main(String[] args) {
A a1 = new A();
A a2 = new A(1);
System.out.println(a1.x + " " + a2.x);
}
}
Advanced Programing TA Session,
Sharif University of Technology
A.java
2
Constructors
• Can constructors call other constructors?
class A {
int x;
A() {
this(10);
}
A(int x) {
this.x = x;
}
public static void main(String[] args) {
A a1 = new A();
A a2 = new A(1);
System.out.println(a1.x + " " + a2.x);
}
}
Advanced Programing TA Session,
Sharif University of Technology
A.java
3
Constructors
• What is the output of running class B?
class A {
A() {
System.out.print("A");
}
}
B.java
class B extends A {
B() {
System.out.print("B");
}
public static void main(String[] args) {
A a = new A();
B b = new B();
}
}
• The output is “AAB”
Advanced Programing TA Session,
Sharif University of Technology
A.java
4
Constructors
• What is the output of running class B?
class A {
A(int x) {
System.out.println("A “ + x);
}
}
B.java
B.java:2: cannot find symbol
symbol : constructor A()
location: class A
B() {
^
1 error
class B extends A {
B() {
System.out.println("B");
}
public static void main(String[] args) {
A a = new A(1);
B b = new B();
}
}
Advanced Programing TA Session,
Sharif University of Technology
A.java
5
Solution
• What is the output of running class B?
class A {
A(int x) {
System.out.println("A “ + x);
}
}
B.java
class B extends A {
B() {
super(1);
System.out.println("B");
}
public static void main(String[] args) {
A a = new A(1);
B b = new B();
}
}
Advanced Programing TA Session,
Sharif University of Technology
A.java
6
7
Advanced Programing TA Session,
Sharif University of Technology
8
Advanced Programing TA Session,
Sharif University of Technology
9
Advanced Programing TA Session,
Sharif University of Technology
10
Advanced Programing TA Session,
Sharif University of Technology
Advanced Programing TA Session,
Sharif University of Technology
class Clazz {
? int compute (int i) {
return 0;
}
}
11
class Shape{
};
class Ellipse extends Shape{
int r = 10 ;
public Ellipse(int rd){
r = rd ;
printR() ;
}
public void printR(){
System.out.println(r);
}
};
class Circle extends Ellipse{
public Circle(){
super(25);
r = 20 ;
printR();
}
public void printR(){
System.out.println(r);
}
};
Advanced Programing TA Session,
Sharif University of Technology
int r = 5 ;
public Shape(){
printR();
}
public void printR(){
System.out.println(r);
}
public static void main(String[] params){
Shape s = new Circle();
}
12
13
Advanced Programing TA Session,
Sharif University of Technology
14
Advanced Programing TA Session,
Sharif University of Technology
درستی و یا نادرستی هر یک از عبارات زیر را مشخص کرده و دلیل خود را نیز برای این امر ذکر کنید.
Advanced Programing TA Session,
Sharif University of Technology
15
الف) در زبان جاوا ،تنها در زمان ساختن اشیا بر روی انها کنترل داریم و در زمان از بین بردن اشیا
کنترلی روی انها نداریم.
ب) توابع پدر یک کالس که قابل دسترسی در ان کالس نیستند ،قابل Overrideشدن نیستند.
ج) هر کالس باید تمامی توابع موجود در interfaceهای خود را (در صورتی که یک یا چند
interfaceرا استفاده کرده باشد) پیادهسازی کند.
د) هر دادهای را که میتوان توسط PrintWriterدر خروجی نوشت ،میتوان توسط
OutputStreamهم ان را در خروجی تولید کرد.
class Dady extends GrandPa {
int t;
static {
System.out.println("1");
}
Dady(){
System.out.println(t);
}
public void callMe(){
System.out.println(t++);
}
}
class GrandPa {
static {
System.out.println("2");
}
int t;
GrandPa (){
callMe();
t = 2;
}
protected void callMe(){
System.out.println(t);
}
public static void main(String[]
args){
GrandPa p = new Dady();
}
}
Advanced Programing TA Session,
Sharif University of Technology
.خروجی برنامهی زیر را به صورت کامل بنویسید
16
interface Comparator {
// return 1 if obj1 > obj2
// return 0 if obj2 == obj1
// return -1 if obj2 > obj1
int compare(Object
obj1, Object obj2);
}
interface Sorter{
Object[] sort(Object[]
objArray);
}
Advanced Programing TA Session,
Sharif University of Technology
ای برای مقایسه اشیا با یکدیگر به نامinterface
interface کالسی از این. داده شده استcomparator
.پیادهسازی کنید که بتوان با آن دو رشته متنی را مقایسه کرد
ای دیگر نیز برای مرتب کردن اشیا داده شدهinterface
یک مرتب ساز برایinterface با استفاده از این.است
) نمره4( . ها پیاده سازی کنیدString آرایهای از
17
زیر را به صورتی پیادهسازی کنید که دارای interface
خصوصیات زیر باشد 6( .نمره)
Advanced Programing TA Session,
Sharif University of Technology
18
.1این پیادهسازی ،پیادهسازی یک درخت
با درجه نامشخص است که در گره آن
یک مقدار دادهای نگاهداری میشود.
.2فرزندان هر گره را میتوان با
فراخوانی تابع getChildrenبدست
آورد.
.3با استفاده از تابع writePreOrder
درخت باید به صورت پیشترتیب نوشته
شود.
{ interface Tree
;)(Object getData
;)(Tree[] getChildren
;)(public void writePreOrder
;)(public Boolean isLeaf
}