#include <cassert>
#include <iostream>

inline Filme::Filme(std::string const& nome, 
		    std::string const& realizador,
		    int duracao)
    :nome_(nome), realizador_(realizador), duracao_(duracao) 
{
    assert(0 <= duracao);

    assert(cumpreInvariante());
}

inline std::string const& Filme::nome() const 
{
    assert(cumpreInvariante());

    return nome_;
}

inline std::string const& Filme::realizador() const 
{
    assert(cumpreInvariante());

    return realizador_;
}

inline int Filme::duracao() const 
{
    assert(cumpreInvariante());

    return duracao_;
}

inline void Filme::mostraEm(std::ostream& saida) const 
{
    assert(cumpreInvariante());

    saida << "Nome:\t\t" << nome() << std::endl
	  << "Realizador:\t" << realizador() << std::endl
	  << "Duracao:\t" << duracao() << std::endl;
}

inline bool Filme::cumpreInvariante() const
{
    return 0 <= duracao_;
}