<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for VehicleIdentificationDiagnostics StructType
 * @subpackage Structs
 */
class VehicleIdentificationDiagnostics extends AbstractStructBase
{
    /**
     * The TypeCar
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $TypeCar;
    /**
     * The ObcIdentification
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $ObcIdentification;
    /**
     * The SysNr
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $SysNr;
    /**
     * The SysNrOverwritten
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $SysNrOverwritten;
    /**
     * Constructor method for VehicleIdentificationDiagnostics
     * @uses VehicleIdentificationDiagnostics::setTypeCar()
     * @uses VehicleIdentificationDiagnostics::setObcIdentification()
     * @uses VehicleIdentificationDiagnostics::setSysNr()
     * @uses VehicleIdentificationDiagnostics::setSysNrOverwritten()
     * @param string $typeCar
     * @param string $obcIdentification
     * @param string $sysNr
     * @param string $sysNrOverwritten
     */
    public function __construct($typeCar = null, $obcIdentification = null, $sysNr = null, $sysNrOverwritten = null)
    {
        $this
            ->setTypeCar($typeCar)
            ->setObcIdentification($obcIdentification)
            ->setSysNr($sysNr)
            ->setSysNrOverwritten($sysNrOverwritten);
    }
    /**
     * Get TypeCar value
     * @return string|null
     */
    public function getTypeCar()
    {
        return $this->TypeCar;
    }
    /**
     * Set TypeCar value
     * @param string $typeCar
     * @return \StructType\VehicleIdentificationDiagnostics
     */
    public function setTypeCar($typeCar = null)
    {
        // validation for constraint: string
        if (!is_null($typeCar) && !is_string($typeCar)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($typeCar, true), gettype($typeCar)), __LINE__);
        }
        $this->TypeCar = $typeCar;
        return $this;
    }
    /**
     * Get ObcIdentification value
     * @return string|null
     */
    public function getObcIdentification()
    {
        return $this->ObcIdentification;
    }
    /**
     * Set ObcIdentification value
     * @param string $obcIdentification
     * @return \StructType\VehicleIdentificationDiagnostics
     */
    public function setObcIdentification($obcIdentification = null)
    {
        // validation for constraint: string
        if (!is_null($obcIdentification) && !is_string($obcIdentification)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($obcIdentification, true), gettype($obcIdentification)), __LINE__);
        }
        $this->ObcIdentification = $obcIdentification;
        return $this;
    }
    /**
     * Get SysNr value
     * @return string|null
     */
    public function getSysNr()
    {
        return $this->SysNr;
    }
    /**
     * Set SysNr value
     * @param string $sysNr
     * @return \StructType\VehicleIdentificationDiagnostics
     */
    public function setSysNr($sysNr = null)
    {
        // validation for constraint: string
        if (!is_null($sysNr) && !is_string($sysNr)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sysNr, true), gettype($sysNr)), __LINE__);
        }
        $this->SysNr = $sysNr;
        return $this;
    }
    /**
     * Get SysNrOverwritten value
     * @return string|null
     */
    public function getSysNrOverwritten()
    {
        return $this->SysNrOverwritten;
    }
    /**
     * Set SysNrOverwritten value
     * @param string $sysNrOverwritten
     * @return \StructType\VehicleIdentificationDiagnostics
     */
    public function setSysNrOverwritten($sysNrOverwritten = null)
    {
        // validation for constraint: string
        if (!is_null($sysNrOverwritten) && !is_string($sysNrOverwritten)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sysNrOverwritten, true), gettype($sysNrOverwritten)), __LINE__);
        }
        $this->SysNrOverwritten = $sysNrOverwritten;
        return $this;
    }
}
