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