added lab3 ex1
This commit is contained in:
		
							
								
								
									
										5
									
								
								src/lab3_abstract_factory/ex1/AbstractDoor.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/lab3_abstract_factory/ex1/AbstractDoor.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| package lab3_abstract_factory.ex1; | ||||
|  | ||||
| public abstract class AbstractDoor { | ||||
|     public abstract int getPrice(); | ||||
| } | ||||
							
								
								
									
										5
									
								
								src/lab3_abstract_factory/ex1/AbstractWall.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/lab3_abstract_factory/ex1/AbstractWall.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| package lab3_abstract_factory.ex1; | ||||
|  | ||||
| public abstract class AbstractWall { | ||||
|     public abstract int getPrice(); | ||||
| } | ||||
							
								
								
									
										5
									
								
								src/lab3_abstract_factory/ex1/AbstractWindows.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/lab3_abstract_factory/ex1/AbstractWindows.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| package lab3_abstract_factory.ex1; | ||||
|  | ||||
| public abstract class AbstractWindows { | ||||
|     public abstract int getPrice(); | ||||
| } | ||||
							
								
								
									
										26
									
								
								src/lab3_abstract_factory/ex1/ArchitectOffice.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/lab3_abstract_factory/ex1/ArchitectOffice.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| package lab3_abstract_factory.ex1; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.house_factories.DutchHouseFactory; | ||||
| import lab3_abstract_factory.ex1.house_factories.GermanHouseFactory; | ||||
| import lab3_abstract_factory.ex1.house_factories.SwissWoodChaletFactory; | ||||
|  | ||||
| public class ArchitectOffice { | ||||
|     public static void main(String[] args) { | ||||
|         House house1 = new House("Modern German house", | ||||
|                 new GermanHouseFactory()); | ||||
|         house1.buildHouse(); | ||||
|         house1.calculatePrice(); | ||||
|         House house2 = new House("Typical dutch house", | ||||
|                 new DutchHouseFactory()); | ||||
|         house2.buildHouse(); | ||||
|         house2.calculatePrice(); | ||||
|         House house3 = new House("Swiss wood chalet", | ||||
|                 new SwissWoodChaletFactory()); | ||||
|         house3.buildHouse(); | ||||
|         house3.calculatePrice(); | ||||
|  | ||||
|         System.out.println(house1); | ||||
|         System.out.println(house2); | ||||
|         System.out.println(house3); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										46
									
								
								src/lab3_abstract_factory/ex1/House.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/lab3_abstract_factory/ex1/House.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| package lab3_abstract_factory.ex1; | ||||
|  | ||||
| public class House { | ||||
|     private String name; | ||||
|     private HouseFactory houseFactory; | ||||
|     private AbstractWall wall; | ||||
|     private AbstractWindows windows; | ||||
|     private AbstractDoor door; | ||||
|  | ||||
|     public House(String name, HouseFactory houseFactory) { | ||||
|         this.name = name; | ||||
|         this.houseFactory = houseFactory; | ||||
|     } | ||||
|  | ||||
|     public void buildHouse() { | ||||
|         wall = houseFactory.buildWall(); | ||||
|         windows = houseFactory.buildWindows(); | ||||
|         door = houseFactory.buildDoor(); | ||||
|         System.out.println( | ||||
|             "Building a house with " | ||||
|                 + wall | ||||
|                 + ", " | ||||
|                 + windows | ||||
|                 + " and a " | ||||
|                 + door | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     public void calculatePrice() { | ||||
|         int total = 0; | ||||
|         total += wall.getPrice(); | ||||
|         total += windows.getPrice(); | ||||
|         total += door.getPrice(); | ||||
|  | ||||
|         System.out.println("Total price: " + total); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "House '" + name + "' (\n" | ||||
|                 + "  Walls: " + wall + "\n" | ||||
|                 + "  Windows: " + windows + "\n" | ||||
|                 + "  Door: " + door + "\n" | ||||
|                 + ")"; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										7
									
								
								src/lab3_abstract_factory/ex1/HouseFactory.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/lab3_abstract_factory/ex1/HouseFactory.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| package lab3_abstract_factory.ex1; | ||||
|  | ||||
| public abstract class HouseFactory { | ||||
|     public abstract AbstractWall buildWall(); | ||||
|     public abstract AbstractWindows buildWindows(); | ||||
|     public abstract AbstractDoor buildDoor(); | ||||
| } | ||||
							
								
								
									
										15
									
								
								src/lab3_abstract_factory/ex1/doors/LargeDoor.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/lab3_abstract_factory/ex1/doors/LargeDoor.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| package lab3_abstract_factory.ex1.doors; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractDoor; | ||||
|  | ||||
| public class LargeDoor extends AbstractDoor { | ||||
|     @Override | ||||
|     public int getPrice() { | ||||
|         return 50; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "large door"; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										15
									
								
								src/lab3_abstract_factory/ex1/doors/ThinDoor.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/lab3_abstract_factory/ex1/doors/ThinDoor.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| package lab3_abstract_factory.ex1.doors; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractDoor; | ||||
|  | ||||
| public class ThinDoor extends AbstractDoor { | ||||
|     @Override | ||||
|     public int getPrice() { | ||||
|         return 25; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "thin door"; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,26 @@ | ||||
| package lab3_abstract_factory.ex1.house_factories; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractDoor; | ||||
| import lab3_abstract_factory.ex1.AbstractWall; | ||||
| import lab3_abstract_factory.ex1.AbstractWindows; | ||||
| import lab3_abstract_factory.ex1.HouseFactory; | ||||
| import lab3_abstract_factory.ex1.doors.LargeDoor; | ||||
| import lab3_abstract_factory.ex1.walls.BricksWall; | ||||
| import lab3_abstract_factory.ex1.windows.FramedWindows; | ||||
|  | ||||
| public class DutchHouseFactory extends HouseFactory { | ||||
|     @Override | ||||
|     public AbstractWall buildWall() { | ||||
|         return new BricksWall(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public AbstractWindows buildWindows() { | ||||
|         return new FramedWindows(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public AbstractDoor buildDoor() { | ||||
|         return new LargeDoor(); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,26 @@ | ||||
| package lab3_abstract_factory.ex1.house_factories; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractDoor; | ||||
| import lab3_abstract_factory.ex1.AbstractWall; | ||||
| import lab3_abstract_factory.ex1.AbstractWindows; | ||||
| import lab3_abstract_factory.ex1.HouseFactory; | ||||
| import lab3_abstract_factory.ex1.doors.LargeDoor; | ||||
| import lab3_abstract_factory.ex1.walls.GlassWall; | ||||
| import lab3_abstract_factory.ex1.windows.FullHeightWindows; | ||||
|  | ||||
| public class GermanHouseFactory extends HouseFactory { | ||||
|     @Override | ||||
|     public AbstractWall buildWall() { | ||||
|         return new GlassWall(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public AbstractWindows buildWindows() { | ||||
|         return new FullHeightWindows(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public AbstractDoor buildDoor() { | ||||
|         return new LargeDoor(); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,26 @@ | ||||
| package lab3_abstract_factory.ex1.house_factories; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractDoor; | ||||
| import lab3_abstract_factory.ex1.AbstractWall; | ||||
| import lab3_abstract_factory.ex1.AbstractWindows; | ||||
| import lab3_abstract_factory.ex1.HouseFactory; | ||||
| import lab3_abstract_factory.ex1.doors.ThinDoor; | ||||
| import lab3_abstract_factory.ex1.walls.WoodWall; | ||||
| import lab3_abstract_factory.ex1.windows.FramedWindows; | ||||
|  | ||||
| public class SwissWoodChaletFactory extends HouseFactory { | ||||
|     @Override | ||||
|     public AbstractWall buildWall() { | ||||
|         return new WoodWall(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public AbstractWindows buildWindows() { | ||||
|         return new FramedWindows(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public AbstractDoor buildDoor() { | ||||
|         return new ThinDoor(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										15
									
								
								src/lab3_abstract_factory/ex1/walls/BricksWall.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/lab3_abstract_factory/ex1/walls/BricksWall.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| package lab3_abstract_factory.ex1.walls; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractWall; | ||||
|  | ||||
| public class BricksWall extends AbstractWall { | ||||
|     @Override | ||||
|     public int getPrice() { | ||||
|         return 10; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "brick walls"; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										15
									
								
								src/lab3_abstract_factory/ex1/walls/GlassWall.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/lab3_abstract_factory/ex1/walls/GlassWall.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| package lab3_abstract_factory.ex1.walls; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractWall; | ||||
|  | ||||
| public class GlassWall extends AbstractWall { | ||||
|     @Override | ||||
|     public int getPrice() { | ||||
|         return 100; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "glass walls"; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										15
									
								
								src/lab3_abstract_factory/ex1/walls/WoodWall.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/lab3_abstract_factory/ex1/walls/WoodWall.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| package lab3_abstract_factory.ex1.walls; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractWall; | ||||
|  | ||||
| public class WoodWall extends AbstractWall { | ||||
|     @Override | ||||
|     public int getPrice() { | ||||
|         return 1; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "wood walls"; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										15
									
								
								src/lab3_abstract_factory/ex1/windows/FramedWindows.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/lab3_abstract_factory/ex1/windows/FramedWindows.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| package lab3_abstract_factory.ex1.windows; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractWindows; | ||||
|  | ||||
| public class FramedWindows extends AbstractWindows { | ||||
|     @Override | ||||
|     public int getPrice() { | ||||
|         return 100; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "framed windows"; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										15
									
								
								src/lab3_abstract_factory/ex1/windows/FullHeightWindows.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/lab3_abstract_factory/ex1/windows/FullHeightWindows.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| package lab3_abstract_factory.ex1.windows; | ||||
|  | ||||
| import lab3_abstract_factory.ex1.AbstractWindows; | ||||
|  | ||||
| public class FullHeightWindows extends AbstractWindows { | ||||
|     @Override | ||||
|     public int getPrice() { | ||||
|         return 200; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String toString() { | ||||
|         return "full-height windows"; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user