473,396 Members | 1,773 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

arguments don't match datatype of constructor

Freckles
Hi! I've been trying to get my inventory program to compile, but haven't had any luck. My instructor tells me that my arguments in the Inventory3 class need to match the datatype of the constructor in my Product class. I'm sure this is something rather simple that I should be able to figure out, but I'm at my wits end trying to make this work. Does anyone have any suggestions? My code is below. Thanks so much to anyone with advice in advance!!

Expand|Select|Wrap|Line Numbers
  1. class Product
  2. {
  3.     private int itemNumber; //Number assigned to product
  4.     private String itemName; //Name of product
  5.     private int stock; //Number of units of the product in stock
  6.     private double price; //Price of each unit of the product
  7.  
  8.     public Product () //constructor for the product class
  9.     {
  10.         itemNumber = 0;
  11.         itemName = "";
  12.         stock = 0;
  13.         price = 0.00;
  14.     } //end constructor
  15.  
  16.     public Product (int itemNumber, String itemName, int stock, double price) //begin constructor for item array
  17.     {
  18.         this.itemNumber = itemNumber;
  19.         this.itemName = itemName;
  20.         this.stock = stock;
  21.         this.price = price;
  22.     }
  23.  
  24.     public void setItemNumber(int itemNumber) //sets and gets the item number
  25.     {
  26.         this.itemNumber = itemNumber;
  27.     }
  28.     public int getItemNumber()
  29.     {
  30.         return itemNumber;
  31.     }
  32.  
  33.  
  34.     public void setItemName(String itemName) //sets and gets the item name
  35.     {
  36.         this.itemName = itemName;
  37.     }
  38.     public String getItemName()
  39.     {
  40.         return itemName;
  41.     }
  42.  
  43.  
  44.     public void setStock(int stock) //sets and gets the number of units in stock
  45.     {
  46.         this.stock = stock;
  47.     }
  48.     public int getStock()
  49.     {
  50.         return stock;
  51.     }
  52.  
  53.  
  54.     public void setPrice(double price) //sets and gets the price per unit
  55.     {
  56.         this.price = price;
  57.     }
  58.     public double getPrice()
  59.     {
  60.         return price;
  61.     }
  62.  
  63.  
  64.     public double value() //calculates the value of the stock by multiplying the number of units on hand by the price of each unit
  65.     {
  66.         return stock * price;
  67.     }
  68.  
  69.     public String toString()
  70.     {
  71.         return "Item Number: "+itemNumber + "\nProduct Name: "+itemName+"\nQuantity in Stock: "+stock+"\nPrice per Unit: $"+price+"\nValue of Entire Stock: $"+value();
  72.     }
  73.  
  74. }//end class Product
  75.  
  76. class Plastic extends Product
  77. {
  78.     private String itemColor; //color of product
  79.  
  80.     public Plastic () //begin constructor
  81.     {
  82.         super();
  83.         itemColor = "";
  84.     }
  85.  
  86.     public Plastic ( int itemNumber, String itemName, int stock, double price, String itemColor )
  87.     {
  88.         super(itemNumber, itemName, stock, price );
  89.         this.itemColor = itemColor; //add new attribute
  90.     }
  91.  
  92.     public void setItemColor(String itemColor) //sets and gets the item color
  93.     {
  94.         this.itemColor = itemColor;
  95.     }
  96.     public String getItemColor()
  97.     {
  98.         return itemColor;
  99.     }
  100.  
  101.     public double restockFee()
  102.     {
  103.         return value() * 0.05;
  104.     }
  105.  
  106. } //end class Plastic
  107.  
  108. public class Inventory3 //begin class Inventory3
  109. {
  110.      public static void main( String args[])
  111.      {
  112.         Product[] item = new Product [4];
  113.  
  114.         Product item1 = new Product (1003182, "Polytrope TPP", 7, 1.81, "Black" );
  115.         Product item2 = new Product (1003296, "Polyvin PVC", 3, 1.72, "Light Neutral" );
  116.         Product item3 = new Product (1013972, "Polyvin PVC-DC", 8, 1.75, "Beige" );
  117.         Product item4 = new Product (1019392, "Invision", 9, 1.57, "Medium Dark Pewter" );
  118.  
  119.         item[0] = item1;
  120.         item[1] = item2;
  121.         item[2] = item3;
  122.         item[3] = item4;
  123.  
  124.  
  125.         double all = 0.00;
  126.  
  127.         for (int total= 0; total < 4;total++)
  128.         {
  129.             all = all + item[total].value();
  130.         }
  131.  
  132.         for (Product myProduct: item)
  133.         {
  134.             System.out.println(item);
  135.             System.out.println();
  136.         }
  137.  
  138.         System.out.println("The Value of all items combined is: $"+all);
  139.     } //end method main
  140. } //end class Inventory3
May 23 '07 #1
17 2246
blazedaces
284 100+
Hey, next time also post the errors you're getting when you try to compile, that would help people out.

See in inventory3 where you're calling new Product(bla bla)

Don't you mean new Plastic?

See, in inventory3 you're writing this:


"Product item1 = new Product (1003182, "Polytrope TPP", 7, 1.81, "Black" );"

which is Product (int, string, int, double, string), but looking at your product's constructor, like your teacher said, it doesn't match, it's like this, from your code:

"public Product (int itemNumber, String itemName, int stock, double price)"

Where's that string I wondered... you're extending class Plastic and the constructor for class plastic is from your code:

"public Plastic ( int itemNumber, String itemName, int stock, double price, String itemColor )"

So I believe you wanted to type:

Expand|Select|Wrap|Line Numbers
  1. Product item1 = new Plastic (1003182, "Polytrope TPP", 7, 1.81, "Black" );
  2. Product item2 = new Plastic (1003296, "Polyvin PVC", 3, 1.72, "Light Neutral" );
  3. Product item3 = new Plastic (1013972, "Polyvin PVC-DC", 8, 1.75, "Beige" );
  4. Product item4 = new Plastic (1019392, "Invision", 9, 1.57, "Medium Dark Pewter" );
Hope that helped...
-Asaf Erlich
May 23 '07 #2
JosAH
11,448 Expert 8TB
Hi! I've been trying to get my inventory program to compile, but haven't had any luck. My instructor tells me that my arguments in the Inventory3 class need to match the datatype of the constructor in my Product class. I'm sure this is something rather simple that I should be able to figure out, but I'm at my wits end trying to make this work. Does anyone have any suggestions? My code is below. Thanks so much to anyone with advice in advance!!

Expand|Select|Wrap|Line Numbers
  1.         Product item1 = new Product (1003182, "Polytrope TPP", 7, 1.81, "Black" );
  2.         Product item2 = new Product (1003296, "Polyvin PVC", 3, 1.72, "Light Neutral" );
  3.         Product item3 = new Product (1013972, "Polyvin PVC-DC", 8, 1.75, "Beige" );
  4.         Product item4 = new Product (1019392, "Invision", 9, 1.57, "Medium Dark Pewter" );
You don't have Product constructors taking five parameters. That's what your
instructor is trying to tell you. Carefully check your Product constructors.

kind regards,

Jos
May 23 '07 #3
You guys are super ... thanks - that worked! My program compiles now, but it's not giving me the correct ouput. This is what I get rather than a list of inventory items with their respective details:

[LProduct;@42e816

[LProduct;@42e816

[LProduct;@42e816

[LProduct;@42e816

The Value of all items combined is: $45.96
Press any key to continue . . . .

Any suggestions? I don't even know where to begin with this one!
May 23 '07 #4
nomad
664 Expert 512MB
You guys are super ... thanks - that worked! My program compiles now, but it's not giving me the correct ouput. This is what I get rather than a list of inventory items with their respective details:

[LProduct;@42e816

[LProduct;@42e816

[LProduct;@42e816

[LProduct;@42e816

The Value of all items combined is: $45.96
Press any key to continue . . . .

Any suggestions? I don't even know where to begin with this one!

yes add a boolean statement
with a while statement
use a scanner to prompt the user to make a choice.
if yes then continue
if no close the program.

nomad
May 23 '07 #5
yes add a boolean statement
with a while statement
use a scanner to prompt the user to make a choice.
if yes then continue
if no close the program.

nomad
I tried this and it didn't help. I'm still getting the same output except now with the option
for the user to enter a choice. Any other suggestions?
May 24 '07 #6
JosAH
11,448 Expert 8TB
You guys are super ... thanks - that worked! My program compiles now, but it's not giving me the correct ouput. This is what I get rather than a list of inventory items with their respective details:

[LProduct;@42e816

[LProduct;@42e816

[LProduct;@42e816

[LProduct;@42e816

The Value of all items combined is: $45.96
Press any key to continue . . . .

Any suggestions? I don't even know where to begin with this one!
You're printing the wrong object; you're printing 'item' four times; you should
print myProduct instead. Note that the output is the same four times which
matches the fact that you're printing the same object four times.

kind regards,

Jos
May 24 '07 #7
You're printing the wrong object; you're printing 'item' four times; you should
print myProduct instead. Note that the output is the same four times which
matches the fact that you're printing the same object four times.

kind regards,

Jos
Thanks Jos. That fixed my output errors, but it's not printing the additional attribute (color) or restock fee that's in my "Plastic" class. How do I link the two up so everything prints?
May 24 '07 #8
Ganon11
3,652 Expert 2GB
You will probably have to override the toString() method in Plastic. It can be very simple - call Product's .toString() to get all that information, concatenate the additional information that Plastic has, and return the resultant String.
May 24 '07 #9
You will probably have to override the toString() method in Plastic. It can be very simple - call Product's .toString() to get all that information, concatenate the additional information that Plastic has, and return the resultant String.
I feel so dumb when it comes to this stuff! How do I call the toString from the Product class into the Plastic class?
May 25 '07 #10
Ganon11
3,652 Expert 2GB
By using the super keyword:

Expand|Select|Wrap|Line Numbers
  1. super.superclassMethodHere()
In this case, it's super.toString()
May 25 '07 #11
By using the super keyword:

Expand|Select|Wrap|Line Numbers
  1. super.superclassMethodHere()
In this case, it's super.toString()
I added this plus the additional information, but now I'm getting a new error ...

Expand|Select|Wrap|Line Numbers
  1. class Plastic extends Product
  2. {
  3.     private String itemColor; //color of product
  4.  
  5.     public Plastic () //begin constructor
  6.     {
  7.         super();
  8.         itemColor = "";
  9.     }
  10.  
  11.     public Plastic ( int itemNumber, String itemName, int stock, double price, String itemColor )
  12.     {
  13.         super.toString();
  14.         return "Item Number: "+itemNumber + "\nProduct Name: "+itemName+"\nQuantity in Stock: "+stock+"\nPrice per Unit: $"+price+"\nValue of Entire Stock: $"+value+"\nProduct Color"+itemColor+"\nValue of Inventory with a restocking fee: $:"+restockFee();
  15.         this.itemColor = itemColor; //add new attribute
  16.     }
  17.  
  18.     public void setItemColor(String itemColor) //sets and gets the item color
  19.     {
  20.         this.itemColor = itemColor;
  21.     }
  22.     public String getItemColor()
  23.     {
  24.         return itemColor;
  25.     }
  26.  
  27.     public double restockFee()
  28.     {
  29.         return getPrice() * 0.05;
  30.     }
  31.  
  32. } //end class Plastic
error:
java:96: cannot return a value from method whose result type is void
return "Item Number: "+itemNumber + "\nProduct Name: "+itemName+"\nQuantity in Stock: "+stock+"\nPrice per Unit: $"+price+"\nValue of Entire Stock: $"+value+"\nProduct Color"+itemColor+"\nValue of Inventory with a restocking fee: $:"+restockFee();

the ^ is below the final + before 'restockFee'
May 25 '07 #12
JosAH
11,448 Expert 8TB
You stuck that piece of code in your constructor. You're supposed to override
the superclass's toString() method and call it too; like this:
Expand|Select|Wrap|Line Numbers
  1. public String toString() { return super.toString()+" my additional info"; }
kind regards,

Jos
May 25 '07 #13
You stuck that piece of code in your constructor. You're supposed to override
the superclass's toString() method and call it too; like this:
Expand|Select|Wrap|Line Numbers
  1. public String toString() { return super.toString()+" my additional info"; }
kind regards,

Jos
Perfect - Thank you!! Is there anywhere that I can put in the %.2f argument to keep my restock fee to 2 decimal places? I've tried putting it in several places, but end up either having it print or with an error.
May 25 '07 #14
sandyw
122 100+
Perfect - Thank you!! Is there anywhere that I can put in the %.2f argument to keep my restock fee to 2 decimal places? I've tried putting it in several places, but end up either having it print or with an error.
Not sure but I think you want to add %2f to the
public PrintStream format(String format, Object... args)

nomad
May 25 '07 #15
Thanks for the tips. I still haven't been able to get the 2-decimal point to work. But I've moved on to bigger and better and things for the moment.... I just have to make my items show up in a frame one at a time, which I've managed to figure out. But I want the entire application to close when I finish going through each window. I'm trying to use EXIT_ON_CLOSE, but it's not working properly. Can anyone tell me what I'm missing? This assignment is due tonight so any quick help would be GREATLY appreciated!!

Expand|Select|Wrap|Line Numbers
  1. public class InventoryGui extends JFrame //begin class InventoryGui
  2. {
  3.     public static void main( String args[])
  4.     {
  5.         Product[] item = new Product [4];
  6.  
  7.         Product item1 = new Plastic (1003182, "Polytrope TPP", 7, 1.81, "Black" );
  8.         Product item2 = new Plastic (1003296, "Polyvin PVC", 3, 1.72, "Light Neutral" );
  9.         Product item3 = new Plastic (1013972, "Polyvin PVC-DC", 5, 1.15, "Beige" );
  10.         Product item4 = new Plastic (1019392, "Invision", 9, 1.57, "Medium Dark Pewter" );
  11.  
  12.         item[0] = item1;
  13.         item[1] = item2;
  14.         item[2] = item3;
  15.         item[3] = item4;
  16.  
  17.         double all = 0.00;
  18.  
  19.         for (int total= 0; total < 4;total++)
  20.         {
  21.             all = all + item[total].value();
  22.         }
  23.  
  24.         for (Product myProduct: item)
  25.         {
  26.             System.out.println(myProduct);
  27.             System.out.println();
  28.         }
  29.  
  30.         System.out.println("The Value of all items combined is: $"+all);
  31.  
  32.         JOptionPane.showMessageDialog( null, "The first item is: "+item1, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display first item
  33.         JOptionPane.showMessageDialog( null, "The second item is: "+item2, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display second item
  34.         JOptionPane.showMessageDialog( null, "The third item is: "+item3, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display third item
  35.         JOptionPane.showMessageDialog( null, "The fourth item is: "+item4, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display fourth item
  36.         JOptionPane.showMessageDialog( null, "The value of the entire inventory is: "+all, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display inventory value total
  37.  
  38.         InventoryGui inventoryGui = new InventoryGui(); //create InventoryGui
  39.         inventoryGui.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); //set frame to close on exit
  40.  
  41.     } //end main method
  42.  
  43. } //end class InventoryGui
May 25 '07 #16
sandyw
122 100+
Thanks for the tips. I still haven't been able to get the 2-decimal point to work. But I've moved on to bigger and better and things for the moment.... I just have to make my items show up in a frame one at a time, which I've managed to figure out. But I want the entire application to close when I finish going through each window. I'm trying to use EXIT_ON_CLOSE, but it's not working properly. Can anyone tell me what I'm missing? This assignment is due tonight so any quick help would be GREATLY appreciated!!

Expand|Select|Wrap|Line Numbers
  1. public class InventoryGui extends JFrame //begin class InventoryGui
  2. {
  3.     public static void main( String args[])
  4.     {
  5.         Product[] item = new Product [4];
  6.  
  7.         Product item1 = new Plastic (1003182, "Polytrope TPP", 7, 1.81, "Black" );
  8.         Product item2 = new Plastic (1003296, "Polyvin PVC", 3, 1.72, "Light Neutral" );
  9.         Product item3 = new Plastic (1013972, "Polyvin PVC-DC", 5, 1.15, "Beige" );
  10.         Product item4 = new Plastic (1019392, "Invision", 9, 1.57, "Medium Dark Pewter" );
  11.  
  12.         item[0] = item1;
  13.         item[1] = item2;
  14.         item[2] = item3;
  15.         item[3] = item4;
  16.  
  17.         double all = 0.00;
  18.  
  19.         for (int total= 0; total < 4;total++)
  20.         {
  21.             all = all + item[total].value();
  22.         }
  23.  
  24.         for (Product myProduct: item)
  25.         {
  26.             System.out.println(myProduct);
  27.             System.out.println();
  28.         }
  29.  
  30.         System.out.println("The Value of all items combined is: $"+all);
  31.  
  32.         JOptionPane.showMessageDialog( null, "The first item is: "+item1, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display first item
  33.         JOptionPane.showMessageDialog( null, "The second item is: "+item2, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display second item
  34.         JOptionPane.showMessageDialog( null, "The third item is: "+item3, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display third item
  35.         JOptionPane.showMessageDialog( null, "The fourth item is: "+item4, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display fourth item
  36.         JOptionPane.showMessageDialog( null, "The value of the entire inventory is: "+all, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display inventory value total
  37.  
  38.         InventoryGui inventoryGui = new InventoryGui(); //create InventoryGui
  39.         inventoryGui.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); //set frame to close on exit
  40.  
  41.     } //end main method
  42.  
  43. } //end class InventoryGui
I think you better read up on swings...
couple of things you have some of your codes in the wrong order, and you are not using them correctly.
you also need to add(item),
setVisible(true)
Public static void main (String[] argements){
InventoryGui inventoryGui = new InventoryGui();
}

Sandy
May 26 '07 #17
Here's what I added but I can still see it's wrong. Do I need to call each item[ ] ... and how do I do that if so?

Expand|Select|Wrap|Line Numbers
  1.  
  2. public class InventoryGui extends JFrame //begin class InventoryGui
  3. {
  4. private JLabel items; // JLabel with just text 
  5. public InventoryGui()
  6. {
  7. setLayout( new FlowLayout() );
  8. items = new JLabel("text");
  9. add(items);
  10. }
  11. public static void main( String args[])
  12. {
  13. InventoryGui inventoryGui = new InventoryGui(); //create InventoryGui
  14. inventoryGui.setVisible( true ); // display frame
  15. inventoryGui.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); //set frame to close on exit
  16. Product[] item = new Product [4];
  17. Product item1 = new Plastic (1003182, "Polytrope TPP", 7, 1.81, "Black" );
  18. Product item2 = new Plastic (1003296, "Polyvin PVC", 3, 1.72, "Light Neutral" );
  19. Product item3 = new Plastic (1013972, "Polyvin PVC-DC", 5, 1.15, "Beige" );
  20. Product item4 = new Plastic (1019392, "Invision", 9, 1.57, "Medium Dark Pewter" );
  21. item[0] = item1;
  22. item[1] = item2;
  23. item[2] = item3;
  24. item[3] = item4;
  25. double all = 0.00;
  26. for (int total= 0; total < 4;total++)
  27. {
  28. all = all + item[total].value();
  29. }
  30. for (Product myProduct: item)
  31. {
  32. System.out.println(myProduct);
  33. System.out.println();
  34. }
  35. System.out.println("The Value of all items combined is: $"+all);
  36. JOptionPane.showMessageDialog( null, "The first item is: "+item1, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display first item
  37. JOptionPane.showMessageDialog( null, "The second item is: "+item2, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display second item
  38. JOptionPane.showMessageDialog( null, "The third item is: "+item3, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display third item
  39. JOptionPane.showMessageDialog( null, "The fourth item is: "+item4, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display fourth item
  40. JOptionPane.showMessageDialog( null, "The value of the entire inventory is: "+all, "ASI Product Inventory", JOptionPane.PLAIN_MESSAGE ); //display inventory value total
  41. } //end main method
  42. } //end class InventoryGui
  43.  
May 26 '07 #18

Sign in to post your reply or Sign up for a free account.

Similar topics

9
by: Matt Eberts | last post by:
Sorry, bad title. Anyway, is there a way to pass the arguments to an object instantiated via a constructor using the arguments object and have it expanded, so to speak, so that it doesn't appear as...
11
by: The Directive | last post by:
This code will not compiled: In main function: Dot temp = new Dot( *(new Point( 5, 5 )) ); In Dot class: //Constructor with default arguments. Dot::Dot( Point& point= *(new Point( 5, 5...
5
by: Andy Buckley | last post by:
Hi, A friend and I have recently had trouble getting code to compile when using temporary objects in constructors. A minimal example is below: This code fragment is used to construct seven ROD...
3
by: Hanika | last post by:
Hello All, I onced used a very efficient method in VBScript to retrive nammed arguments passed on the commanline using: WScript.Arguments.Named.Item ("ArgumenName"). That is, the call to the...
1
by: Allan Ebdrup | last post by:
I have the following class in C# with two constructors -------------- public class JobfolderEmailRecord { public JobfolderEmailRecord(int Id) { //code for constructor } public...
41
by: Telmo Costa | last post by:
Hi. I have the following code: -------------------------------------- function Tunnel() { //arguments(???); } function Sum() { var sum = 0; for (i=0; i<arguments.length; i++) sum +=...
36
by: Pacific Fox | last post by:
Hi all, haven't posted to this group before, but got an issue I can't work out... and hoping to get some help here ;-) I've got a base object that works fine with named arguments when called...
3
by: saxenavaibhav17 | last post by:
Actually at some place I am creating object of outcome class. its taking five argument. i don't want to give 3 and 4 th argument. i want to give 1,2 and 5 th argument. Outcome...
5
by: subramanian100in | last post by:
I am copying the following text as it is from Stroustrup's TC++PL 3rd edition, page 450. It says: "Note that a constructor given two arguments of the same type can be a match for more than...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.