Apart from the Gearbox not needing a class wrap (use a simple enum), the implementation is correct, however the diagram is not correct to begin with.
In your proposed implementation you can notice that you are actually treating Location and Brand as a pseudo-enums; either use a class meaningfully, or use an enum. This kind of pseudo concept is just confusing.
Try to follow Java naming conventions when writing code (so brandName instead of brand_name, etc.)
1) No association to Gearbox
You shouldn't specify an association to an enumeration (the same for primitive types such as String, int, etc.), instead use an attribute.
Furthermore you should not the visibility (public, private, ...) for enum literals. In fact UML doesn't even allow you to specify that, because the "attributes" in enumerations are actually different concepts from attributes in classes.

2) brand_name is odd
A car is manufactured under a brand, which has a name. However it is better to model the brand as a separate entity with a name attribute, rather than having a "brand_name" association, or an enum.

If you want to preserve the brand_name "access", you can add a method that will get you the value, e.g.

3) The same for location; location might have more attributes than a country; maybe address, maybe points of contacts, etc. So treat it as yet another modeling concept.
4) Do not use shared association if you don't specify what it means
Shared association (empty rhombus) in UML has no specified meaning, which makes it flexible, but if you use it without specifying the meaning, it means nothing. So use association instead.
