12. . (, , , ) . . - . - , .
13. . , . . . , .
14. . , , . , . . .
15. - . , , . . .
16. . , , , . , . . . .
4
4.1.
:
class Base {}
class A extends Base {}
public class Quest{
public static void main(String[] args){
Base b = new Base();
A ob = (A) b;
} }
:
1) ;
2) ;
3) .
4.2.
A Quest2 . Quest2, ?
public class A{}
class Quest2 extends A, Object {}
1) public A;
2) public Quest2;
3) extends ;
4) Object .
4.3.
:
class A {A(int i) {}} // 1 class B extends A {} // 2? ( )
1) ;
2) ;
3) 1;
4) 2.
4.4.
, Quest.java:
public class Base{
Base(){
int i = 1;
System.out.print(i);
} }
public class Quest4 extends Base{
static int i;
public static void main(String [] args){
Quest4 ob = new Quest4();
System.out.print(i);
} }
:
|
|
1) ;
2) 0;
3) 10;
4) 1;
5) .
4.5.
?
class Q {
private void show(int i){
System.out.println("1");
} }
class Quest5 extends Q{
public void show(int i){
System.out.println("2");
}
public static void main(String[] args){
Q ob = new Quest5();
int i = 1; //1
ob.show(i);
} }
1) : show() ;
2) : show() ;
3) : 1;
4) 2;
5) 1.
4.6.
?
class Q {
void mQ(int i) {
System.out.print("mQ" + i);
} }
class Quest6 extends Q {
public void mQ(int i) {
System.out.print("mQuest" + i);
}
public void mP(int i) {
System.out.println("mP" + i);
}
public static void main(String args[]) {
Q ob = new Quest6(); //1
ob.mQ(1); //2
ob.mP(1); //3
} }
1) mQ1 mP1;
2) mQuest1 mP1;
3) //1;
4) //2;
5) //3.
4.7.
A, A .
class A{
A(int i){ System.out.print(" A"); }
}
public class Quest extends A{
public static void main(String[] args){
Quest s= new Quest();
//1
}
public Quest(){
//2
}
publicvoid show() {
//3
} }
1) //1 A(1);
2) //1 super(1);
3) //2 super(1);
4) //2 A(1);
5) //3 super(1).
GRASP
, . . , , . .
- , , GRASP(General Responsibility Assignment Software Patterns).
,
.
Expert
, : , , .
, , . , , . , , ?
|
|
/* # 1: Expert: LineRequestQuest.java:Test.java: Quest.java */
public class Test { //
private int idTest;
private int numberQuest;
private String testName;
//
}
public class LineRequestQuest {
private int questID;
//
}
public class Quest { //
private int idQuest;
private int testID;
//
}
, , LineRequestQuest. Test, . , Expert Test , .. .
/* # 2: Expert: Test.java */
lass Test {
private int idTest;
private int numberQuest;
private String testName;
private int currentNumberQuest;
public int getCurrentNumberQuest() {
//
}
Test |
- |
currentNumberQuest: |
- |
idTest: |
- |
numberQuest: |
- |
testName: |
+ |
getCurrentNumberQuest(): void |
Quest |
- |
idQuest: |
- |
testID: |
LineRequestQuest |
- |
questID: |
1..n |
//
}
. 5.1. Expert
Expert:
, ;
(Low Coupling);
(Highly Cohesive) , .
Expert , Low Coupling High Cohesion.
Creator
, , .
, . B A, :
(aggregate) ;
(contains) ;
(records or closely uses) ;
B A , , , ;
(has the initializing data), .
, (creator) .
. .
, Quest ( Quest).
LineRequestQuest Quest, Creator , Quest. :
. 5.2. Creator
/* # 3: Creator: Qest.java: LineRequestQuest.java:Test.java */
public class Test {
|
|
private int idTest;
private int numberQuest;
private String testName;
private int currentNumberQuest;
//
}
public class LineRequestQuest {
private int questID;
public void answerQuest() {
//
Vector q = new Vector();
q.add(makeRequest());
//
}
public Quest makeRequest() {
//
return new Quest();
}
}
public class Quest{
private int idQuest;
private int testID;
public Quest() {}
//
}
Creator (Low Coupling), , , . , . .
Low Coupling
, . , .
, :
;
- ;
- , , .
Quest Test. Test Course.
. 5.3. ,
Course makeQuest() Test. , , Quest .
. 5.4. Low Coupling
/* # 4: Low Coupling: Qest.java: Test.java: Course.java */
public class Course {
private int id;
private String name;
public void makeTest(){
Test test = new Test();
//
while (){
Quest quest = new Quest();
//
test.addTest(quest);
}
//
}
}
public class Test {
//
public void addTest(Quest quest){
//
}
}
public class Quest {
//
}
, Course Quest.
Course 5.5.
. 5.5. Low Coupling
/* # 5: Low Coupling: Qest.java: Test.java: Course.java */
public class Course {
private int id;
private String name;
public void makeTest() {
Test test = new Test();
//
test.addTest();
//
}
}
public class Test {
//
public void addTest() {
//
while () {
Quest quest = new Quest();
//
}
}
}
public class Quest {
//
}
, , ?
, Test
Quest.
, Quest Course, , . , .
|
|
A B:
A , B;
A , B, B , ;
A B;
B , A .
Low Coupling (Expert, Creator, High Cohesion). .
Low Coupling:
;
, .
High Cohesion
, , .
. , . .
, , :
, () ;
- , ;
, .
, .
Quest . ? Course, Quest Course. Course makeTest() Test. Course, .. Course makeTest(). Course , , .
.
:
1. . .
/* # 6: : Initializer.java */
public class Initializer {
public void createTCPServer(String port) {
//
}
public int connectDataBase(URL url) {
//
}
public void createXMLDocument(String name) {
//
}
}
2. . .
/* # 7: : NetLogicCreator.java */
public class NetLogicCreator {
public void createTCPServer() {
//
}
public void createTCPClient() {
//
}
public void createUDPServer() {
//
}
public void createUDPClient() {
//
}
}
3. . , , .
/* # 8: : TCPServer.java */
public class TCPServer {
public void createTCPServer() {
//
}
public void receiveData() {
//
}
public void sendData() {
//
}
public void compression() {
//
}
public void decompression() {
//
}
}
4. . .
/* # 9: : TCPServerCreator.java: DataTransmission.java: CodingData.java */
public class TCPServerCreator {
public void createTCPServer() {
//
}
}
public class DataTransmission {
public void receiveData() {
//
}
public void sendData() {
//
}
}
public class CodingData {
public void compression() {
//
}
public void decompression() {
//
}
}
, , , , . , . , , , . , .
|
|
Controller
, . , , , , .
. , . , .
, . .
Controller, , :
( );
, ( );
Handler ( ).
.
Controller , . - , . -
.